commit 77996da5fc515c03fdb4c3970f3268e38d7bbc3b Author: Lars Date: Tue Jun 21 02:30:03 2005 +0000 Imported version 3.2.12 from PRCS. git-svn-id: svn://svn.bearnip.com/ldmud/3.2/trunk@9 56160b6e-f8f8-0310-bd54-bccebfe6a2f2 diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 00000000..a780be01 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,6683 @@ +This file lists all changes made to the game driver in all gory detail. +See the file HISTORY for a user-oriented summary of all the changes. + +20-Jun-2005 (Lars Duening) (3.2.12-dev.725) + - (patchlevel.h.in, version.sh, mk-patchlevel.sh, Makefiles) + Modified the version numbering system to be compatible between + Subversion and PRCS. + +13-Jun-2005 (Lars Duening) (3.2.12-dev.724) + - (comm.c) Adapted for Mac OS X 10.4. + +15-May-2005 (Lars Duening) (3.2.12-dev.723) + - (simulate.c) runtime_error() and heart_beat_error() received + a new argument 'caught' (Bug #0000385). + +15-May-2005 (Lars Duening) (3.2.12-dev.722) + - (comm.c) Corrected the error messages for errors in the extra + arguments of input_tl(). (Bug #0000379). + +15-May-2005 (Lars Duening) (3.2.12-dev.721) + - (call_out.c) Corrected the error messages for errors in the extra + arguments of call_out(). (Bug #0000379). + +15-May-2005 (Lars Duening) (3.2.12-dev.720) + - (object.c) Single-character operator closures like #'- couldn't + be restored in arrays due to some outdated hack in the parser + (Bug #0000384 and #0000386). + - (configure) Link in the crypto libs only if actually needed (reported + by Coogan). + +24-Apr-2005 (Lars Duening) (3.2.12-dev.719) + - (main.c, pkg-tls.c) Improved the documentation for the TLS commandline + options, removed a crasher when only one of the two cert locations + is specified (thanks, Coogan!). + - (configure) New configuration parameter '--with-tls-path' allows + to specifiy a non-standard location for the TLS installation. + +01-Apr-2005 (Lars Duening) (3.2.12-dev.718) + - (pkg-tls.c) Added FreeBSD 5.4 compatibility (thanks, Ralph!). + - (simulate, many files) Renamed error() to errorf() due to a collision + with gnutls.h include files under newer compilers. + - (port.c) Corrected a C99 incompatibility (thanks, Ralph!). + +25-Mar-2005 (Lars Duening) (3.2.12-dev.717) + - (simulate.c) Modified the callback setup so that efun callbacks + can take normal lvalues; and timed function/closure callbacks + take protected lvalues - but not vice versa. + +10-Mar-2005 (Lars Duening) (3.2.11-dev.716 == 3.2.11) + - (interpret.c) The efun tell_object() can now take an array as + second argument, calling catch_msg() in the target in that case + (Bug #0000354). + +03-Mar-2005 (Lars Duening) (3.2.11-dev.715) + - (doc/efun/snoop) Corrected the description of the return value (Bug + #0000372). + +20-Feb-2005 (Lars Duening) (3.2.11-dev.713, -dev.714) + - (pkg-tls.c, xalloc.h, smalloc) Removed compilation errors when using GnuTLS. + - (comm.c) The charmode/noecho mode is changed in remove_input_to() + only if the first pending input_to() is removed. Hopefully this + fixes Bug #0000363. + +13-Feb-2005 (Lars Duening) (3.2.11-dev.712) + - (pkg-tls.c) Philip provided a tls_check_certificate() efun. + +12-Feb-2005 (Lars Duening) (3.2.11-dev.711) + - (pkg-tls.c) My change was premature. + +11-Feb-2005 (Lars Duening) (3.2.11-dev.710) + - (comm) New interactive_t flag 'outgoing_conn' is TRUE for connections + openened by net_connect(). + - (comm, pkg-tls.c) New interactive_t flag 'outgoing_conn' is TRUE for + connections openened by net_connect(). This is used by TLS (OpenSSL) + to set the proper state for the session. + +08-Feb-2005 (Lars Duening) (3.2.11-dev.709) + - (pkg-tls, other files) Backported the TLS support from 3.3 (Bug #0000357). + +07-Feb-2005 (Lars Duening) (3.2.11-dev.708) + - (smalloc.c) If malloc() is used in esbrk(), and a block would exceed + the large block limit, the driver aborts with a proper error message. + Fixing this properly like in 3.3 would of course be nicer, but + unfortunately it would take another fine-combed pass through the + source as the 3.3 patch is not applicable. + +22-Jan-2005 (Lars Duening) (3.2.11-dev.707) + - (efuns.c) Deep-copying a mapping employing shared arrays as keys (e.g. ([ + arr, ([ arr ]) ])) prematurely freed the copied array as the code + didn't keep track of the copied data itself, but of the svalues it was + stored in - and for mapping keys these svalues were local variables + (Bug #0000351). + +16-Jan-2005 (Lars Duening) (3.2.11-dev.706) + - (configure) Corrected the mySQL library check (Bug #0000346). + +14-Jan-2005 (Lars Duening) (3.2.11-dev.705) + - (array.c) Efun unique_array() no longer leaks memory if aborted + by an exception (Bug #0000345). + +13-Jan-2005 (Lars Duening) (3.2.11-dev.704) + - (util/xerq/erq.c) The erq didn't check if the calculated timeout + for the next select() had become negative. (Bug #0000342). + +10-Jan-2005 (Lars Duening) (3.2.11-dev.703) + - (mapping.c) Indexing a 0-width mapping returned pointers to memory outside + the mapping, causing weird crashes. The solution is to return pointers + to the global const1 (when found), or to a local svalue-0 instance + (when not found and a lvalue is requested) (Bug #0000341). + +10-Jan-2005 (Lars Duening) (3.2.11-dev.702) + - (configure) Added yet another path to the search for a mySQL installation. + +09-Jan-2005 (Lars Duening) (3.2.11-dev.701) + - (configure) Added another path to the search for a mySQL installation. + +08-Jan-2005 (Lars Duening) (3.2.11-dev.700) + - (mudlib/sys/files.h, files.c) Efun get_dir() can now return + access times and file modes (suggested by Mats). + +08-Jan-2005 (Lars Duening) (3.2.11-dev.699) + - (settings/timewarp) New settings file. + +08-Jan-2005 (Lars Duening) (3.2.11-dev.698) + - (configure, pkg-mysql.c) Adjusted the search for the mySQL include + files to allow for local installations (Bug #0000338) + - (closure, sprintf.c, interpret.c) to_string() and sprintf() now + print closures in the same format, and with more detail. + +04-Jan-2005 (Lars Duening) (3.2.11-dev.697) + - (main.c, doc/driver/invocation, INSTALL) Corrected the documentation + (Bugs #0000333 and #0000335). + +31-Dec-2004 (Gnomi) (3.2.11-dev.696) + - (lex.c) Preprocessor statements inside of inline closures can now + be handled (thanks, Gnomi!) + - (mapping.c) Closures can be used as mapping keys (thanks, Gnomi!) + +28-Dec-2004 (Lars Duening) (3.2.11-dev.695) + - (pkg-mysql.c) Most mySQL efuns are now privileged as ("mysql", "") (Bug #0000318). + +27-Dec-2004 (Lars Duening) (3.2.11-dev.694) + - (doc/efun/m_values) Explained the lack of predictable order in the result + (Bug #0000329) + +23-Dec-2004 (Lars Duening) (3.2.11-dev.693) + - (comm.c, sys/input_to.h) The input_to() flag INPUT_APPEND allows + to queue input_to()s (suggested by Volker Behr). + +23-Dec-2004 (Lars Duening) (3.2.11-dev.692) + - (lex, efuns.c) Another small correction to the number parsing in to_int(): + negative numbers exceeding the limits are properly mapped to INT_MIN, + not -INT_MAX. Unfortunately too large negative numbers seen by + the LPC compiler are still mapped to -INT_MAX due to the lack + of proper overflow handling in the compiler; however, the compiler + now emits a warning on these occasions. + +22-Dec-2004 (Lars Duening) (3.2.11-dev.691) + - (lex.c, interpret.c) The overflow checking in the number parsing routine + was overeager, causing Evermore to no longer boot. The checking + now really compares against the largest possible number, instead + of simply checking the sign (Bug #0000327). + +21-Dec-2004 (Lars Duening) (3.2.11-dev.690) + - (lex.c) The number parsing now recognizes overflows and forces these + numbers to be LONG_MAX (Bug #0000327). + +18-Dec-2004 (Lars Duening) (3.2.11-dev.689) + - (interpret.c) Assignments to negative-sized ranges now throw + an error (Bug #0000325). + +17-Dec-2004 (Lars Duening) (3.2.11-dev.688) + - (mapping.c) The driver now throws an error message when the code + tries to use lfun or identifier closures as keys (Bug #0000324). + +11-Dec-2004 (Lars Duening) (3.2.11-dev.686, .687) + - (gcollect.c) Closures found to be bound to destructed objects are + replaced by 0s, not #'undef closures (Bug #0000322). + +06-Dec-2004 (Lars Duening) (3.2.11-dev.685) + - (erq/erq.c) The erq didn't quite use correct data lengths when sending UDP + packets, either (thanks, Tobias!) + +03-Dec-2004 (Lars Duening) (3.2.11-dev.683, .684) + - (erq/erq.c) The erq errorneously assumed a constant data length + when receiving UDP packets (thanks, Tobias!) + - (lex.c) Preprocessor statements inside inline closures are now recognized + and rejected as implementation restriction (Bug #0000317). + - (comm.c, simulate.c) The driver didn't check if the privilege_violation() + called for input_to() or rename_object() destructed the object + in question (Bug #0000316). + +30-Nov-2004 (Lars Duening) (3.2.11-dev.682) + - (comm.c) Fixed a memory leak when no-bang input_to's were denied + (Bug #0000143). + +29-Nov-2004 (Lars Duening) + - (Makefile.in) Added the missing MANDIR directive (Bug #0000315). + +27-Nov-2004 (Lars Duening) (3.2.11-dev.681) + - (interpret.c) When calling inherited functions in objects with virtual + parents, the function adjusting the offsets always returned NULL + instead of the pointer to the parent. This was a fallout from the + closure change. + +26-Nov-2004 (Lars Duening) (3.2.11-dev.680) + - (Makefile.in, doc/man/ldmud.1) Added the automatic generation of a manpage + from the drivers '--longhelp' output. + - (src/bugs, src/done, src/wk) Moved the data from these directories + into the bugtracker. + +26-Nov-2004 (Lars Duening) (3.2.11-dev.678, -dev.679) + - (closure.c) Calls to explicitely inherited lfun closures weren't compiled + correctly in lambda()s (Bug #0000145). + +25-Nov-2004 (Lars Duening) (3.2.11-dev.677) + - (prolang.y) The LPC compiler produced invalid bytecode for inline + closures (Bug #0000144). + - (prolang.y) Corrected a compilation error if INITIALIZATION_BY_INIT was + not defined (reported by Steve). + +24-Nov-2004 (Lars Duening) (3.2.11-dev.676) + - (closure, gcollect.c, interpret.c, object, prolang) Implemented proper + closures explicitely referencing inherited functions. + +22-Nov-2004 (Lars Duening) (3.2.11-dev.675) + - (comm.c) Efun net_connect(): on multihomed machines the created + socket is bound to the hostname given with the --hostname option (Bug + #0000137). + +15-Nov-2004 (Lars Duening) (3.2.11-dev.674) + - (interpret.c) You learn a new thing every day: I never realized that + strtol() supports "+34" and similar - efun to_int() can now + interpret that again, too (reported by Bardioc). + +13-Nov-2004 (Lars Duening) (3.2.11-dev.673) + - (lex.c, interpret.c) Embarassing: the number parsing method assumed that the + string at least started with a digit - this broken to_int(). + (Bug #0000141) + +11-Nov-2004 (Lars Duening) (3.2.11-dev.672) + - (interpret.c, lex) Efun to_int() now supports the '0x', '0b', and '0o' + bases (suggested by Steve Goucher). + +30-Oct-2004 (Lars Duening) (3.2.11-dev.671) + - (interpret.c, efuns) Introduced the (str, n) form for efun present() + (Bug #0000134). + - (smalloc.c) smalloc now supports allocations of 0 byte length (needed + to replace malloc()). + +14-Oct-2004 (Lars Duening) (3.2.11-dev.670) + - (comm.c) The NOECHO hook call specified only two arguments when + three were required (reported by Bardio and Steve G.). + +22-Sep-2004 (Lars Duening) (3.2.11-dev.669) + - (driver.h) Added a macro MIN() for those systems which don't have it. + - (port.h) Removed the unecessary cast from the ixopen definition. + +12-Sep-2004 (Lars Duening) (3.2.11-dev.668) + - (prolang.y, lex) New pragma (no_)warn_function_inconsistent to control + the handling of redefined functions which differ in return or argument + types. This is intended to easen the adaptation of legacy mudlib + code (suggested by Wayne). + +12-Sep-2004 (Lars Duening) (3.2.11-dev.667) + - (prolang.y) When checking the redefinition of inherited variables, do + allow the redefinition of static inherited variables with other + static variables (it will generated warning, though). Also the + equivalency of nosave and static was applied too late (reported by + Willem). + - (func_spec, efuns.c, main) Added an 'exit code' argument to the shutdown() + efun (Bug #0000129). + - (func_spec, interpret.c, prolang.y) The pragma warn-deprecated is now + expressed through a prefix bytecode where appropriate (Bug #0000059). + +04-Sep-2004 (Lars Duening) (3.2.11-dev.666) + - (prolang.y) Corrected a compilation warning (Bug #0000125). + +04-Sep-2004 (Lars Duening) (3.2.11-dev.665) + - (comm.c, simulate.c) Added new input_to() flag 'INPUT_LOCAL' to switch + only the driver side input mode between LINE and CHAR (Bug #0000124). + +03-Sep-2004 (Lars Duening) (3.2.11-dev.664) + - (interpret.c, actions.c, simulate.c) Removed memory leaks (thanks, Gnomi!) + (Bug #0000120). + - (sprintf.c) Too large fieldsizes or precisions are caught (Bug #0000119). + - (object.c) Some operator closures were saved using the wrong names, making + the restoration impossible. Also, restoring closures within arrays + wasn't robust enough (Bug #0000118). + - (comm.c) Clarified the warnings for input_to modechanges for objects + with telnet disabled (Bug #0000124). + - (comm.c) When switching out of CHARMODE, the driver accidentally + discarded any pending input lines after the current one. (thanks, + Gnomi) (Bug #0000123) + +30-Aug-2004 (Lars Duening) (3.2.11-dev.663) + - (prolang.y) The move of the PREPARE_INSERT() in the last patch caused + the driver to generate faulty bytecode. + +23-Aug-2004 (Lars Duening) (3.2.11-dev.662) + - (prolang.y) Removed a C99 construct which broke compilation on C90 + compilers. I hope. (Bug #0000116). + +22-Aug-2004 (Lars Duening) (3.2.11-dev.661) + - (interpret.c) Calls from destructed objects to other objects + (including simul-efun calls) now elicit a warning (Bug #0000113). + +21-Aug-2004 (Lars Duening) (3.2.11-dev.660) + - (interpret.c) If a lambda was executed inside a catch() and threw an + error, the error routines didn't clean up the protective reference + held in current_lambda (Bug #0000114). + - (backend.c) A runtime error during a regreplace() closure would leak + the working buffer and the match buffer (Bug #0000114). + - (interpret.c) to_string(closure) leaked the closure (Bug #0000114). + - (ed.c) The 'M' command leaked the regular expression (Bug #0000114). + +19-Aug-2004 (Lars Duening) (3.2.11-dev.659) + - (prolang.y, interpret.c, func_spec) Float variables without initializer + are now properly initialized to float-0 instead of number-0 (reported + by Bardioc). + - (pkg-mccp.c) When ending a MCCP connection failed due to an error, the + zlib datastructures weren't deallocated (Bug #0000111, fix by Alwin). + - (interpret.c) When removing destructed objects from the stack, the code + missed alien-lfun closures bound to the object to be destructed, + regarding only alien-lfun closures defined in that object (Bug + #0000110). + +08-Aug-2004 (Lars Duening) (3.2.11-dev.658) + - (simulate.c) When printing a load-object error with a long filename, + the message is limited to the length of the error message buffer (Bug + #0000109). + - (simulate, xalloc.c) The length of the error message and error format + buffer are now given by two macros, to facilitate easier adaptation + of depending program segments. + - (simulate.c) When restoring closure values, make sure that the symbol + restored really exists (Bug #0000109). + +29-Jul-2004 (Lars Duening) (3.2.11-dev.657) + - (lex.c) The macros __FLOAT_MIN__ and __FLOAT_MAX__ now reflect + the limits for 'double' floats (Bug #0000101). + +28-Jul-2004 (Lars Duening) (3.2.11-dev.656) + - (call_out.c) When printing the uid for an object with an error, make + sure that there is an uid to print (reported by Bardioc). + +25-Jul-2004 (Lars Duening) (3.2.11-dev.655) + - (efuns.c) to_array('symbol) crashed the driver because it tried to + free the symbol as a string (Bug #0000097). + - (interpret.c) The trace collection into an array now uses unlimited + arrays, otherwise a too-small limit would cause the driver + to enter an endless error loop (Bug #0000097). + - (object, gcollect.c) If a save_{object,value} failed and thus + left a pointer table behind, a following GC would free the table + without resetting the pointer. The next save_{object, value} would + then use the freed memory (Bug #0000097). + +25-Jul-2004 (Lars Duening) (3.2.11-dev.654) + - (xerq/erq.c) If select() in the main loop was interrupted by a signal, + the ERQ still proceeded to evaluate the fd-sets. + - (xerq/execute.c) The debug logging of the execute parameters didn't + work. + - (comm.c) If an ERQ callback function accepts an array, the numbers + are now all passed on positive (range 0..255). + +24-Jul-2004 (Lars Duening) (3.2.11-dev.653) + - (xerq/defs.h) ERQ_DEBUG level wasn't properly translated into + debug output. + - (xerq/socket.c) Added a few level 2 diagnostics. + - (call_out.c) If a call-out causes an error, all further call-outs for + the same user are re-scheduled to the next cycle. This is mainly + meant to stop run-away call-outs causing too-long-evaluations while + re-scheduling calls to themselves (Bug #0000095). + +21-Jul-2004 (Lars Duening) (3.2.11-dev.652) + - (interpret.c) Removed a number of memory leaks caused by + runtime errors during array operations which exceeded the max + array size (Bug #0000096). + - (comm.c) If input_to() wasn't given a valid prompt, it leaked + the memory for the internal input-to structure (Bug #0000096). + - (interpret.c) The bitstring operators would leak the memory for + the result if encountering an invalid bitpattern (Bug #0000096). + +16-Jul-2004 (Lars Duening) (3.2.11-dev.651) + - (array.h) The ALLOC_VECTOR macro was misdefined for MALLOC_TRACE (Bug + #0000094) + - (interpret.c) When printing a warning during the creation of in inline + closure, the global stack pointer was one too low (thanks, Gnomi) + (part of Bug #0000091) + +14-Jul-2004 (Lars Duening) (3.2.11-dev.650) + - (smalloc.c) If the allocation exceeds the numerical limits and the + allocation is not in MALLOC_SYSTEM mode, a simple diagnostic is printed + and the allocation fails. This way, an " "*MAX_INT won't crash + the mud. (Bug #0000086) + - (array.h) The array allocation now checks if the size of the requested + array exceeds the numerical limits (part of Bug #0000091) + +12-Jul-2004 (Lars Duening) (3.2.11-dev.649) + - (actions.c) Efun remove_action() didn't check if the sentence under + scrutiny is a true verb or a shadow sentence - this caused a crash + if a shadow object executed remove_action(1, shadowee) (Bug #0000080). + +11-Jul-2004 (Lars Duening) (3.2.11-dev.648) + - (comm.c, actions.c) On a too long message or command, print the + first 200 characters as debugging aid (Bug #0000078). + +10-Jul-2004 (Lars Duening) (3.2.11-dev.647) + - (interpret.c) The tracedepth was always increased, but only decreased + when traceing was active (#0000070) + +01-Jul-2004 (Lars Duening) (3.2.11-dev.646) + - (doc/efun/previous_object) Corrected to reflect actual behaviour (Bug + #0000073). + - (lex.c) The symbol __MAX_MALLOC__ is set to what is actually set + in the global 'max_malloced' and not just the configuration + value MAX_MALLLOCED (Bug #00069). + +14-May-2004 (Lars Duening) (3.2.11-dev.645) + - (doc/) Corrected a number of German manpages. + - (comm.c) net_connect() didn't compile with IPv6 (reported by Fini). + - (object.c) Contradicting the documentation, save_object() + did not strip a trailing '.c' from the given filename (reported by + Niflheim@Unitopia) (Bug #00000067). + +30-May-2004 (Lars Duening) (3.2.10) + - RELEASE 3.2.10 + +23-May-2004 (Lars Duening) (3.2.10-dev.644) + - (configure) Corrected a typo in the --with-udp-port option (thanks, + LynX). + +13-May-2004 (Lars Duening) (3.2.10-dev.643) + - (simul_efun, main.c, interpret.c) Re-implemented that the simul_efun + object can be omitted altogether by returning '0' from get_simul_efun() + in the master. + +11-May-2004 (Lars Duening) (3.2.10-dev.642) + - (main.c, simul_efun.c) If the simul-efun object can't be reloaded at + runtime, don't terminate the driver (reported by Bardioc). + +10-May-2004 (Lars Duening) (3.2.10-dev.641) + - (doc/efun.de) Updated (thanks, Menaures!) + +06-May-2004 (Lars Duening) (3.2.10-dev.640) + - (doc/concepts/inheritance) Shiny new doc from Lynx (thanks!). + +26-Apr-2004 (Lars Duening) (3.2.10-dev.639) + - (etc/lpc.xml) Menaures provided a new version. + +24-Apr-2004 (Lars Duening) (3.2.10-dev.637, -dev.638) + - (comm.c) Integrated Uwe's patch to open IPv6 connections with + net_connect() (thanks!). + - (efun.de/) A few more manpage translations. + +20-Apr-2004 (Lars Duening) (3.2.10-dev.636) + - (configure) The MySQL libraries are now also search in + /usr/local/lib/mysql/lib (can happen on older installations on Mac + OS-X). Also, when the libraries were found in /usr/local/lib, the + script still added /usr/local/mysql/lib to the link command. + - (mudlib/sys/lpctypes.h) Corrected a typo. + +18-Apr-2004 (Lars Duening) (3.2.10-dev.635) + - (interpret.c) A too-high stack on a return no longer causes a fatal() + error in DEBUG, but only a runtime warning, as this condition can + happen in certain lambda closures (reported by Risky & Menaures) (Bug + #0000051) + +13-Apr-2004 (Lars Duening) (3.2.10-dev.634) + - (sprintf.c) Format '%b' to print a number in binary notation (supplied + by Ralph - thanks!). + +13-Apr-2004 (Lars Duening) (3.2.10-dev.633) + - (interpret.c) I had to back out the recent change as it interfered with + the use of bitflags. We need a proper unsigned type for this kind of + thing. + +12-Apr-2004 (Lars Duening) (3.2.10-dev.632) + - (mud/heaven7, settings/heaven7) Heaven7 v4 runs natively on LDMud 3.2 . + - (interpret.c) Constant integer numbers exceeding the allowed range + cause runtime errors (reported by Ralph). + +11-Apr-2004 (Lars Duening) (3.2.10-dev.631) + - (mudlib/sys/lpctypes.h) Added symbolic defines for the closure typecodes. + +10-Apr-2004 (Lars Duening) (3.2.10-dev.630) + - (comm.c) Using input_to() without a command_giver crashed the + driver. + - (erq/erq.c, xerq/lookup.c) Well, TRY_AGAIN is a h_errno result, + not errno (thanks, Tobias). + +09-Apr-2004 (Lars Duening) (3.2.10-dev.629) + - (mudlib/dns_resolve.c) Example simul-efun for doing non-blocking + DNS lookups (thanks, Tobias & Arne!) + - (doc/efun.de) Added the german efun manpages from Unitopia (thanks, + Tiberian!) + - (util/erq/erq.c) Corrected the ERQ_LOOKUP so that the passed-in hostnames + are properly null-terminated (thanks, LynX). + - (util/erq/xerq.c) ERQ_LOOKUPs are tried again only if the DNS indicates + that it is useful. + +06-Apr-2004 (Lars Duening) (3.2.10-dev.628) + - (comm.c) With telnet disabled, an input_to() can still pretend to + switch from line- to charmode. + +04-Apr-2004 (Lars Duening) + - (erq.c) Retry name-lookups only if the DNS subsystem said so (thanks, + Tobias!). + +03-Apr-2004 (Lars Duening) (3.2.10-dev.627) + - (comm.c) This is why I hate backporting: I managed to miss half of the + MCCP code. + +03-Apr-2004 (Lars Duening) (3.2.10-dev.626) + - (func_spec, comm) New efun enable_telnet() to disable/enable telnet + support. + +03-Apr-2004 (Lars Duening) (3.2.10-dev.625) + - (configure, comm, lex.c, main.c, pkg-mccp) Backported MCCP support + from 3.3 . + +03-Apr-2004 (Lars Duening) (3.2.10-dev.624) + - (object.c) function_exists() and variable_exists() now check if the + object is destructed, instead of crashing (Bug #0000038). + - (backend.c, object.c) Added missing include for SunOS 4.1 (reported + by Coogan). + - (configure, main.c) strtoul() is not available on the older machines, + this is now checked by configure (reported by Coogan). + - (object.c) If H_RESET/H_CREATE_* are defined by name, static functions + are found as well (suggested by Daniel). + +03-Apr-2004 (Lars Duening) (3.2.10-dev.623) + - (object.c) restore_value() now checks for and rejects extraneous + characters after the '\n' delimiting the value string (Bug #0000039). + - (prolang.y) Casts to type 'mixed' are exempted from generating + an "empty cast" warning (Bug #0000041). + - (configure) The configuration now checks for libnsl as standard + system library - it is needed for ERQ on Solaris (Bug #0000012). + +01-Apr-2004 (Lars Duening) (3.2.10-dev.622) + - (prolang.y) Added the missing typecheck for the &= + case (Bug #0000042). + +01-Apr-2004 (Lars Duening) (3.2.10-dev.621) + - (interpret.c) Implemented &= , &= + (Bug #0000042). + - (interpret.c) get_line_number(): Increased the buffersize for the + program names (Bug #0000040). + +31-Mar-2004 (Lars Duening) (3.2.10-dev.620) + - (prolang.y) Corrected range check regarding short integers (thanks, + Gnomi). + - (lex.c) Completed the change done in 3.2.10-dev.603: the types pragma + setting was still reset for every new include file. + +30-Mar-2004 (Lars Duening) (3.2.10-dev.619) + - (random.c) Updated the Mersenne twister to the version with improved + initialization (thanks, Fini, for the link). + +27-Mar-2004 (Lars Duening) (3.2.10-dev.618) + - (ed.c) The 'Q'/'q' commands no longer clear the buffer before + checking if the command was legal (Bug #0000046). + - (ed.c) Corrected the doprnt() function so that the current line + is never out of range (this could happen when giving 'Z' while + at the end of the file). (Bug #0000045) + +23-Mar-2004 (Lars Duening) (3.2.10-dev.617) + - (actions.c) If the H_COMMAND lfun is not found in an object, the + driver now throws an error instead of crashing (reported by Urv). + +24-Feb-2004 (Lars Duening) (3.2.10-dev.616) + - (xerq/socket.c) When sending data over a congested socket, the + queued data included the last successfully sent bytes + (thanks, Fantom!). + +22-Feb-2004 (Lars Duening) (3.2.10-dev.615) + - (comm) The net_connect() handling wasn't prepared for errors during the + LPC logon, occasionally re-trying the logon endlessly (reported + by Dafire). + +19-Dec-2003 (Lars Duening) (3.2.10-dev.614) + - (comm) When a connection can't be opened immediately with net_connect(), + the socket was closed prematurely (reported by LynX). + +11-Dec-2003 (Lars Duening) (3.2.10-dev.613) + - (comm) When opening a connection with net_connect(), printing of + the prompt clobbered the current_object, causing a crash. + +21-Nov-2003 (Lars Duening) (3.2.10-dev.610 - 612) + - (comm) Added new efun net_connect() (thanks, LynX!) + - (object.c, sys/functionlist.h) Efun variable_list() didn't properly + filter for static variables. + +17-Oct-2003 (Lars Duening) (3.2.10-dev.609) + - (comm.c) Efun query_ip_number(): the return of the full socket + address in a reference argument didn't work (thanks, Nostradamus). + +02-Oct-2003 (Lars Duening) (3.2.10-dev.608) + - (autoconf) Corrected a wrong default argument for array-calls (reported by + Freaky). + +30-Sep-2003 (Lars Duening) (3.2.10-dev.607) + - (comm.c) The maxNumCmds setting was defaulted to 0 instead of -1 + (reported by Bardioc). + - (comm.c, master_skeleton.c) Officially documented that a new + interactive connection is bound to the master at the time + of master::connect(), and adjusted the set_max_commands + manpage accordingly. + - (lex.c) The macros __RESET_TIME__ and __CLEANUP_TIME__ always used + the configured values, ignoring commandline overrides (reported + by Ralph). + - (interpret.c, func_spec) New efun master() to return the master object. + - (mapping.c) Corrected a undefined behaviour in add_mapping() + (reported by Coogan). + +28-Sep-2003 (Lars Duening) (3.2.10-dev.606) + - (comm.c) Removed a crasher from set_max_commands() (thanks, Ralph!). + +27-Sep-2003 (Lars Duening) (3.2.10-dev.605) + - (configure) Oops, forgot to regenerate this file. + +27-Sep-2003 (Lars Duening) (3.2.10-dev.604) + - (autoconf, interpret.c, main.c, lex.c) The call_other() on arrays of + objects is now configurable; if enabled, __LPC_ARRAY_CALLS__ is + defined. + - (mudlib/sys/commands.h) Added defines for the query_action() bitflags. + - (efuns.c) to_array(string) now treats the string characters as unsigned + (reported by Fiona). + +27-Sep-2003 (Lars Duening) (3.2.10-dev.603) + - (comm, func_spec) New efuns set_max_commands(), get_max_commands() + to control the number of commands allowed per second on a + per-connection basis. + - (svalue.h) Added macro put_float() to store floats into a svalue. + - (lex, prolang.y) Pragma (no_)warn_empty_casts allows to turn off + the warnings about ineffective casts. + - (lex.c) A strict_types or strong_types pragma set in an include + file remains active after the end of the include. + - (etc/lpc.vim) LPC syntax highlighting for vim (submitted by Coogan). + +25-Sep-2003 (Lars Duening) (3.2.10-dev.602) + - (comm, func_spec) Passing 0 as argument to + set_{combine,connection}_charset() re-establishes the default charset. + - (comm, func_spec) New efuns get_combine_charset() and + get_connection_charset(). + - (efuns.c) Added a third argument to debug_info(DINFO_OBJLIST) to return + multiple objects. + +11-Aug-2003 (Lars Duening) (3.2.10-dev.601) + - (comm) Experimental: limited the number of commands accepted per + connection to 10 per second - this is meant as a safety limit for + muds making heavy use of charmode connections. If it works out, + the feature will be fully fleshed out with commandline arguments + and everything (Mantis #0000009). + +09-Aug-2003 (Lars Duening) (3.2.10-dev.600) + - (swap.c) The swapper did not recognize VOLATILE strings and treated + them as shared strings - causing crashes and memory leaks + (thanks, Casey!) + +07-Aug-2003 (Lars Duening) (3.2.10-dev.599) + - (doc/) Corrected a number of typos (thanks, Casey!) + - (object.c) The efun variable_list() can now return variable values + as well (thanks, Casey!). + - (interpret, comm.c, closure.c, simulate.c, wiz_list.c, object.c) + Renamed _privilege_violation() to the more sensical + privilege_violation3(). + +07-Aug-2003 (Lars Duening) (3.2.10-dev.598) + - (lex.c) Corrected the line counting with auto-includes (Mantis #0000008, + similar to the change in 3.3.295). + - (configure, pkg-mysql, main.c) Improved the recognition of mySQL when + there's more than one mySQL installation. Additionally the pkg-mysql + checks that the mysqlclient library is consistent with the header + files (reported by Craig Venz). + +31-Jul-2003 (Lars Duening) (3.2.10-dev.597) + - (smalloc.c) Splitting of a block from a larger free list failed + to preserve the PREV_BLOCK flag in the returned block, causing + the defragmentation to miss blocks. + +28-Jul-2003 (Lars Duening) (3.2.10-dev.596) + - (mapping.c) In a walk_mapping(), if the callback object was destructed + before even the first call, the error handling used an invalid stack + pointer and crashed in the cleanup (reported by Menaures). + - (prolang.y) If a pragma requires a function return type, the error + message now names the active pragma in question instead of always + 'strict_types' (Bug #0000003) + +26-Jul-2003 (Lars Duening) (3.2.10-dev.595) + - (mapping.c) In compact_mappings(), the given limit now applies to + mappings considered, not mappings compacted. This prevents + compact_mappings() to scan about the whole list of mappings every time. + Additionally, considered mappings are moved to the end of the list + so that the next call can consider the other mappings. + +26-Jul-2003 (Lars Duening) (3.2.10-dev.594) + - (mapping.c) Mappings were checked for destructed elements far too often, + as the compaction often checked a mapping, and then decided not to + compact it, thus checking it again the next time around. + Additionally, the compaction criterium has been extended to + guarantee a compaction after 2 * TIME_TO_COMPACT seconds idle time. + Hopefully this corrects the high CPU load observed in the recent + drivers. + +24-Jul-2003 (Lars Duening) + - (mudlib/dhrystone.c) The time measurement was off by factor 10. + +22-Jul-2003 (Lars Duening) (3.2.10-dev.593) + - (object.c) Corrected the error messages for faulty arguments + to variable_list() (thanks, Fuchur!). + - (object.c) Plugged a memory leak in restore_object() from a string: if + the argument string was MALLOCed (e.g. because it was retrieved + from the data array returned by a MySQL query), the driver forgot to + free it (reported by Alwin). + +17-Jul-2003 (Lars Duening) (3.2.10-dev.592) + - (prolang.y) Made the cast checks more informative. + +17-Jul-2003 (Lars Duening) (3.2.10-dev.591) + - (interpret.c) The operators -=, /= and *= can now operate on + x values, yielding a result. + - (prolang.y) Casts with no effect generate a warning. + +17-Jul-2003 (Lars Duening) (3.2.10-dev.590) + - (array.c) When subtracting arrays of closures, compare_single() + did not properly compare them (thanks, Fantom!). + - (array.c, interpret.c) Replaced uses of closure_cmp() with closure_eq() + where appropriate. + +10-Jul-2003 (Lars Duening) (3.2.10-dev.589) + - (interpret.c) When the value stack overflowed during a secure_apply(), + the secure_apply_error() routine failed to notice that the stack + elements had already been cleared out (reported by Bardioc). + +26-Jun-2003 (Lars Duening) + - (interpret.c) Added compile-time check to make sure that MAX_USER_TRACE + is not larger than MAX_TRACE. + +25-Jun-2003 (Lars Duening) (3.2.10-dev.588) + - Just had to repair the repository. + +25-Jun-2003 (Lars Duening) (3.2.10-dev.587) + - (xalloc.c) On HP-UX machines, the stack is above the heap and is also + growing upwards, which the heap/stack check didn't expect. I reworked + the code to be more generic (reported by Rainer). + - (lex.c, interpret.c) Characters with the 8th bit set are now uniformly + treated as positive by the lexer and indexing operations (reported by + Oskar). + - (lex.c) Added macro __MAX_MALLOC__ to reflect the MAX_MALLOCED + parameter (suggested by Coogan). + +07-May-2003 (Lars Duening) (3.2.10-dev.586) + - (simulate.c) The error() routine now takes care to zero out all + pointer variables after freeing the referenced data. This way, if + a recursive error occurs before the new reference is stored the + driver won't try to free the same references again (reported by + Freaky). + - (configure) By default, TRACE_CODE is now off because it uses + up a lot of execution time. + +05-May-2003 (Lars Duening) (3.2.10-dev.585) + - (object.c) Made restore_xxx() even more robust towards CRLFs (thanks, + Holger). + +05-May-2003 (Lars Duening) (3.2.10-dev.584) + - (prolang.y) Corrected a typo, which disabled the recognition of 'publish' + as a keyword for a catch() (reported by Menaures). + +03-May-2003 (Lars Duening) (3.2.10-dev.583) + - (simulate, interpret, func_spec, prolang.y) Added the new modifier + 'publish' to the catch() directive to have it call + master::runtime_error() when an error occurs (suggested by + Menaures). + +03-May-2003 (Lars Duening) (3.2.10-dev.582) + - (comm.c) When a pthread was cancelled, the flushing of the pending + data happened after the socket was already shut down. Reason was that + the threads were 'detached' upon creation, disabling the ability + of the parent thread to wait for their completion (reported by Urv). + - (object.c) The restore_svalue() routine now accepts a CR preceeding + a LF as delimiter. + +30-Apr-2003 (Lars Duening) (3.2.10-dev.581) + - (comm) When using PThreads, destructing an interactive object now + flushes all remaining pending data to the socket (suggested by Urv). + Additionally, the main thread waits properly for the writer thread to + terminate. + +29-Apr-2003 (Lars Duening) (3.2.10-dev.580) + - (ed.c) Only consecutive 'z'/'Z' commands do not re-print the current line; + a 'z'/'Z' after a different command does (suggested by Elric). + +29-Apr-2003 (Lars Duening) (3.2.10-dev.579) + - (sprintf.c) When printing arrays with '%O', the size was given + one too small. + - (xalloc.c) When using sysmalloc, mem_consolidate() wasn't defined + (reported by Fuchur). + - (closure.c) symbol_efun() freed a string prematurely (reported by Fuchur). + +24-Apr-2003 (Lars Duening) (3.2.10-dev.578) + - (interpret.c) If during a call of the type 'funcall(alien-lfun-closure)' + the object bound to the closure was destructed and the closure + deallocated, call_lambda() still read the now-invalid lambda structure + after the actual call. This could lead to an inconsistency in the + control stack, depending on the memory contents (reported by Bardioc). + +22-Apr-2003 (Lars Duening) (3.2.10-dev.577) + - (smalloc.c) Corrected a compilation error when MALLOC_TRACE was not + defined (reported by Neil). + - (interpret.c) Improved the error reporting for F_IDENTIFIER errors: + the pc now points to the F_IDENTIFIER instruction. + (reported by Mandragon and Fiona). + +21-Apr-2003 (Lars Duening) (3.2.10-dev.576) + - (smalloc.c) Corrected the small-free-block statistics. + +16-Apr-2003 (Lars Duening) (3.2.10-dev.575) + - (smalloc.c) Adjacent free small blocks are now merged automatically + as soon as they are detected. This reduces the mem_consolidation() + call to detecting and freeing totally unused small chunks. + - (smalloc.c) The block dump of lost blocks now prints a proper hexdump + instead of just dumping the data as-is. + +13-Apr-2003 (Lars Duening) (3.2.10-dev.574) + - (func_spec, object) The efuns save_value() and save_object() can now + create savefiles in the old format as well. + +09-Apr-2003 (Lars Duening) (3.2.10-dev.573) + - (heartbeat.c) Removed the pooled allocation of heartbeat structures: + Muds have spikes of high callout usage, but a low usage over + the longterm average, so most of the pooled structures are not + used. This more than makes up for any malloc overhead saved + by the pooled allocation. + - (heartbeat.c) Errors in a heartbeat execution now longer aborts + the whole heartbeat cycle (suggested by Baba). + - (efuns.c, main, mudlib/sys/debug_info.h) The boot time is now + available through debug_info(DINFO_DATA, DID_STATUS). + - (wizlist) The wizlist now accounts the evalcost split into + ticks and gigaticks, to be able to handle long uptimes, and also + offer a non-decaying total sum of the evalcosts (suggested by + Baba). + +07-Apr-2003 (Lars Duening) (3.2.10-dev.572) + - (mud/lp-245) Adapted the set_this_object() usage in the master. + - (actions.c) Efun remove_action() can now remove all actions defined + by an object (suggested by Menaures). + +04-Apr-2003 (Lars Duening) (3.2.10-dev.571) + - (lex.c) Modified the inline-closure text replace such that '(: write(); + write() :)' yields a parse error (thanks, Zora). + +30-Mar-2003 (Lars Duening) (3.2.10-dev.570) + - (comm.c) The driver now logs the pathname of the ERQ executable + it attempts to start. + +28-Mar-2003 (Lars Duening) (3.2.10-dev.569) + - (mapping.c) When compiling without DEBUG, the list of dirty + mappings wasn't terminated (reported by Fiona). + +26-Mar-2003 (Lars Duening) (3.2.10-dev.568) + - (prolang.y) Constrained the switch() grammar to accept just blocks + as body, not statements (reported by Menaures). + - (comm.c) After removing a pending input_to, the proper noecho + state is restored (provided by Ctx). + +25-Mar-2003 (Lars Duening) (3.2.10-dev.567) + - (port, simulate.c) Since memmem() is a GNU/Linux extension and buggy + up to glibc 2.0, the driver now uses its own replacement all the + time. But I adjusted the argument order to the one used by the + correct Linux function (reported by Fiona). + - (interpret.c) Function calls by address and global variable accesses + now check if a set_this_object() is in effect. + +24-Mar-2003 (Lars Duening) (3.2.10-dev.566) + - (call_out.c) find_call_out(unbound_lambda) threw an error even though + it is possible to create call_outs on such lambda (they don't do + anything, but it's possible still) (reported by Risky). + +20-Mar-2003 (Lars Duening) (3.2.10-dev.565) + - (object.c) Restoring the efun closure "#e:," confused the + savefile parser (thanks, Risky). + - (func_spec, interpret.c) New efun strrstr(). + - (mapping, prolang.y) Operator '&' can now intersect mappings with + other mappings and arrays. + - (func_spec, mapping) New efun m_entry() to return all values for + an entry at once. + +19-Mar-2003 (Lars Duening) (3.2.10-dev.564) + - (sprintf.c, closure) Modifier '#' used for '%O' and '%Q' produces + output in a compact format (suggested by Menaures). + - (func_spec, interpret.c) New efun rmember(). + +17-Mar-2003 (Lars Duening) (3.2.10-dev.563) + - (doc/master) Added missing manpages for the parse_command() supportf + (reported by Zonk). + - (main, simulate.c, configure) New commandline option '--filename-spaces' + to allow space characters in filenames (default is to disallow them). + - (object.c) Shared closures were saved without the '=' header + (reported by Menaures and Fiona). + +17-Mar-2003 (Lars Duening) (3.2.10-dev.562) + - (mapping.c) Removed a memory leak. + +11-Mar-2003 (Lars Duening) (3.2.10-dev.561) + - (gcollect.c) Added safety check as the GC can't handle mappings + with a hash part. + +09-Mar-2003 (Lars Duening) (3.2.10-dev.560) + - (swap.c, mapping) The swapper got out of sync when swapping mappings + with destructed objects as keys. So far it was not a problem because + mappings got compacted faster than they were swapped, and the swapper + already refused to swap mappings with objects/closures used as keys + in the condensed part. But with the new mapping compaction strategy + a more thorough test became necessary. + +07-Mar-2003 (Lars Duening) (3.2.10-dev.559) + - (configure) New configuration option '--with-optimize' to select + the optimization level in the generated Makefile: no, low, + med, or high. + - (call_out.c) Removed the pooled allocation of callout structures: + Muds have spikes of high callout usage, but a low usage over + the longterm average, so most of the pooled structures are not + used. This more than makes up for any malloc overhead saved + by the pooled allocation. + +06-Mar-2003 (Lars Duening) (3.2.10-dev.558) + - (dumpstat.c, prolang.y, make_func.y) Corrected build warnings. As + a side effect the prolang.y no longer has a special treatment + for byacc (mixing anonymous with default rules). + - (mempools, lex.c) Cosmetic changes. + - (mapping.c) Additional condition for mapping compaction: the number + of entries in the hash part is equal to or exceeds the number + of non-deleted condensed entries. + +05-Mar-2003 (Lars Duening) (3.2.10-dev.557) + - (mempools, alloca.c, array.c, lex.c, ptrtable.c) The user + space of a mempool block is now restricted to 256 bytes, to reduce + fragmentation issues in the large block heap. + +05-Mar-2003 (Lars Duening) (3.2.10-dev.556) + - (gcollect.c, interpret.c) Inserted checks so that the driver doesn't try + to access the non-existing name of the default wizlist entry (in + particular the GC) (reported by Bardioc). + +03-Mar-2003 (Lars Duening) (3.2.10-dev.555) + - (mapping, backend.c, gcollect.c) Experimental: dirty mappings are + not compacted immediately, but only after a certain time (for now + 10 minutes) since the last change has elapsed. + +03-Mar-2003 (Lars Duening) (3.2.10-dev.554) + - (dumpstat.c) Added the object load time to the OBJ_DUMP data (suggested by + Menaures). + - (sprintf.c) When converting a lfun closure which is bound to a different + object than it is defined in ('alien lfun closure'), to a string, the + bound object is printed as well as the defining object. + - (ed.c) Consecutive 'z' or 'Z' commands no longer repeat the previous + current line (suggested by Menaures). + +02-Mar-2003 (Lars Duening) (3.2.10-dev.553) + - (configure) And here, too, I forgot to update the configure script. + +02-Mar-2003 (Lars Duening) (3.2.10-dev.552) + - (configure, smalloc) Removed the CHECK_SMALLOC_TOTAL debugging code - + the problem is fixed. + - (configure, smalloc) New diagnostic option MALLOC_SBRK_TRACE to enable + a log of all esbrk() calls and the stats of the allocation requests + causing it. This formalizes the 'DEBUG: MEM ' diagnostics added + in 3.2.10-dev.545, though the particular string 'DEBUG: MEM ' has been + dropped from the output. + +02-Mar-2003 (Lars Duening) (3.2.10-dev.551) + - (func_spec, interpret, object) Backported from 3.3: efun function_exists() + can now return the linenumber and program name of a function. + +02-Mar-2003 (Lars Duening) (3.2.10-dev.550) + - (interpret.c) Fixed a memory leak in efun m_add(). + +01-Mar-2003 (Lars Duening) (3.2.10-dev.549) + - (func_spec, object) New efun variable_exists() and + variable_list(). + +27-Feb-2003 (Lars Duening) (3.2.10-dev.548) + - (interpret.c) Improved the error message for when 'mapping[a,b]' is used + with incorrect types at runtime. + +27-Feb-2003 (Lars Duening) (3.2.10-dev.547) + - (gcollect.c, swap.c, mempools) During a the GC a new swap membuffer could + be allocated and then marked 'unreferenced' by the GC, subsequently + causing memory corruption as the swapper continued to use it. The + memory buffers are now held on to during the GC and only freed + afterwards. + +24-Feb-2003 (Lars Duening) (3.2.10-dev.546) + - (strfuns.c) Made the strbuf allocations resilient against out-of-memory + conditions. + - (smalloc) rexalloc() now accepts the MALLOC_TRACE information. The + normal implementation doesn't use it, but they are useful when + instrumenting the allocator code. + +23-Feb-2003 (Lars Duening) (3.2.10-dev.545) + - (smalloc.c, xalloc.c) All esbrk() requests are logged on stdout + as 'DEBUG: MEM ...' messages. This is to find out why certain + muds use so much memory lately. + +21-Feb-2003 (Lars Duening) (3.2.10-dev.544) + - (mempools.c) Corrected a compilation problem. + +21-Feb-2003 (Lars Duening) (3.2.10-dev.543) + - (lex.c) Macro __MSDOS_FS__ is defined on systems using the + MS-DOS filesystem conventions. + +20-Feb-2003 (Lars Duening) (3.2.10-dev.542) + - (mempools, backend.c, swap.c, object.c) The file reading efuns (read_file(), + read_bytes(), restore_()) and the swapper now use a persistent buffer + to hold the variable data in memory. Goal is to avoid allocations and + deallocations of large memory blocks which worsen the memory + fragmentation. + +18-Feb-2003 (Lars Duening) (3.2.10-dev.541) + - (smalloc, efuns.c) Since smalloc can split up large small blocks and + handle oversized ones, having the special case of 'unused space' in the + current small chunk is no longer necessary. This also means that the + DID_MEM_UNUSED value from debug_info() no longer exists (b-020506). + +16-Feb-2003 (Lars Duening) (3.2.10-dev.540) + - (smalloc, backend.c, gcollect.c) The smalloc freelist consolidation + is now also called from the backend and does its job whenever + the number of free small blocks is twice the amount the last + consolidation left over. + - (smalloc.c) The maximum small block size has been reduced to 64 Bytes: + it turned out that the larger sizes aren't deallocated often enough + to make the free lists work, which caused unnecessary small chunk + allocations. + - (sprintf.c) Normal (top-level) sprintf() calls now use a static + instance of the fmt_state_t buffer, avoided repeated (de)allocations + of that 130KB structure. + +16-Feb-2003 (Lars Duening) (3.2.10-dev.539) + - (smalloc.c) Since parsing the min-small-malloc already requires + a small chunk allocation, the small chunk allocation using the new + chunk size is also forced to go directly to the system. + +12-Feb-2003 (Lars Duening) (3.2.10-dev.538) + - (prolang.y) The illegal switch-case ranges like '100..50' now generate + an error message (reported by Menaures). + +07-Feb-2003 (Lars Duening) (3.2.10-dev.537) + - (prolang.y) Corrected a fatal error in the 'break'/'continue' + handling. + +06-Feb-2003 (Lars Duening) (3.2.10-dev.536) + - (prolang.y) With the increasing program sizes, using 16-Bit offsets for + the 'break' and 'continue' branches was no longer enough. They might + hold the final offsets, but during compilation they stored the absolute + address of the next 'break'/'continue', which could exceed 2 Bytes + (reported by Alwin). + - (prolang.y) Insertions of 2 byte values are now checked for range. + +04-Feb-2003 (Lars Duening) (3.2.10-dev.535) + - (smalloc.c) Small chunks (except for the first one) are now allocated + from the large blocks. Reason is that during a consolidation, unused + small chunks are returned to the large blocks. Without this change, + new small chunks were always allocated directly from the system + without re-using the space released to the large blocks, so that + over time the process memory usage grew but only a fraction of the + memory was in use (reported by Coogan and Dafire, reproduced by + Menaures). + +02-Feb-2003 (Lars Duening) (3.2.9-dev.534 == 3.2.9) + - (many files) Some cosmetic cleanup. + +26-Jan-2003 (Lars Duening) (3.2.9-dev.533) + - (prolang.y) Corrected a small bug in the code generation for + operators &&= and ||=. + +26-Jan-2003 (Lars Duening) (3.2.9-dev.532) + - (prolang.y) One more detail to the compilation problem (reported + by Freaky). + +26-Jan-2003 (Lars Duening) (3.2.9-dev.531) + - (prolang.y) Removed a compilation problem (reported by Freaky). + +26-Jan-2003 (Lars Duening) (3.2.9-dev.530) + - (prolang.y) Removed a compilation problem. + +25-Jan-2003 (Lars Duening) (3.2.9-dev.529) + - (object.c) Corrected a compilation problem (reported by Joseph). + - (prolang.y, interpret.c, func_spec) Implemented short-circuit evaluation + for the operators '&&=' and '||='. + +24-Jan-2003 (Lars Duening) (3.2.9-dev.528) + - (lex) type #pragmas set in an auto-include were reset at the end of + it (reported by Gnomi). + +24-Jan-2003 (Lars Duening) (3.2.9-dev.527) + - (object.c) save/restore didn't look out for shared closures. + +22-Jan-2003 (Lars Duening) (3.2.9-dev.526) + - (etc/lpc.xml) LPC syntax highlighting for KDE's kate (thanks, Menaures!) + +19-Jan-2003 (Lars Duening) (3.2.9-dev.525) + - (interpret.c) Changed the error thrown by replace_program() + to a mere debug message. + +19-Jan-2003 (Lars Duening) (3.2.9-dev.524) + - (interpret.c) Restricted replace_program() on the first inherited + program if that program has virtually inherited variables. + See b-030119 for an explanation. + +16-Jan-2003 (Lars Duening) (3.2.9-dev.523) + - (prolang.y) When redefining a function, the redefinition can now + have more arguments than the original. + - (lex.c) Escaping newlines in #if conditions on Windows didn't + work (reported by Zonk) + +14-Jan-2003 (Lars Duening) (3.2.9-dev.522) + - (several files) Removed no longer used diagnostic code. + +07-Jan-2003 (Lars Duening) (3.2.9-dev.521) + - (several files) Removed the 'no-blueprint' configuration option: there + code is stable. + +05-Jan-2003 (Lars Duening) (3.2.9-dev.520) + - (make_func.y) When creating type/hookmaps in prolang.y, the linecounting + didn't count the map's continuation lines. + - (interpret.c) string lvalue indices can no longer index past the end + of the string. + - (interpret.c) Removed a couple sanity checks which are no longer needed. + +20-Dec-2002 (Lars Duening) (3.2.9-dev.519) + - (lex.c) Added a workaround for an optimizer bug in Cygwin 3.2 (reported + by Zonk). + +20-Dec-2002 (Lars Duening) (3.2.9-dev.518) + - (actions.c) Throw an error if H_NOTIFY_FAIL hook is missing. This also + prevents the driver from crashing if the H_SEND_NOTIFY hook is + defined (reported by Zonk). + +18-Dec-2002 (Lars Duening) (3.2.9-dev.517) + - (object.c) When calling privilege_violation() for restoring efuns, + the current object is passed as 'who' argument (suggested by Gnomi). + - (object.c) When saving lfuns, I accidentally deleted the lookup + for inherited lfuns (reported by Gnomi). + +17-Dec-2002 (Lars Duening) (3.2.9-dev.516) + - (object.c) restore_svalue() did not check if a restored efun was + overriden by a nomask simul-efun (reported by Gnomi). + - (comm.c) With pthreads, the driver could crash in remove_interactive() + when the write_cond was destroyed while the thread was still + waiting on it (reported by Lee). + +16-Dec-2002 (Lars Duening) (3.2.9-dev.515) + - (object.c) restore_map_size() stumbled over closure entries (reported by + Jason). + +16-Dec-2002 (Lars Duening) (3.2.9-dev.514) + - (comm.c) If the login object destructed itself in the logon() call, + the driver crashed in the print_prompt() routine (reported by Jason). + +15-Dec-2002 (Lars Duening) (3.2.9-dev.513) + - (object.c) Corrected a compilation error (thanks, Dafire and Jason!). + +15-Dec-2002 (Lars Duening) (3.2.9-dev.512) + - (prolang.y) It is no longer possible to defined a variable to be + of type 'void' (reported by Gnomi). + +14-Dec-2002 (Lars Duening) (3.2.9-dev.511) + - (object.c) Small corrections. + +14-Dec-2002 (Lars Duening) (3.2.9-dev.510) + - (object.c) Efuns save_() and restore_() can now handle non-lambda + closures, symbols and quoted arrays. This required a new savefile + format, though. + +11-Dec-2002 (Lars Duening) (3.2.9-dev.509) + - (doc/concepts/negotiation, src/wk/) Added some telnet protocol + related documentation. + - (func_spec, lex.c, prolang.y, interpret.c) New operators '&&=' and + '||=' (suggested by Croft). + +09-Dec-2002 (Lars Duening) (3.2.9-dev.508) + - (mudlib/telnetneg.c) Updated (thanks, Fiona!) + - (mudlib/test_master.c) Added testcode for using charmode (thanks, Fiona!) + - (comm) Fiona provided more patches: SAVE_NOECHO, which makes sure that + the client can switch to CHARMODE before also setting NOECHO; and + SIMULATE_CHARMODE which allows the mudlib to switch to charmode even + if the client can do only linemode. + - (simulate.c) Efuns copy_file() and rename() no longer throw errors + on failures, but just return a non-0 value (reported by Menaures). + +05-Dec-2002 (Lars Duening) (3.2.9-dev.507) + - (config.h, comm, gcollect.c, main.c) Replaced USE_PTHREAD by USE_PTHREADS. + - (comm.c) Before printing the prompt, current_object is set to NULL + so that the player's catch_tell() is sure to be able to see the + prompt (reported by mudder@Furtual.ORG). + +04-Dec-2002 (Lars Duening) (3.2.9-dev.506) + - (make_func.y, comm.c, main.c, prolang.y) Removed warnings (reported by + Coogan). + - (comm.c) When logging on a new player, the prompt wasn't printed - in + particular the prompt set by input_to(INPUT_PROMPT) (reported by + Nostradamus). + - (main.c) If the reserved areas can be reallocated, the out_of_memory + flag is reset. + - (simulate.c) catch() reports an 'out_of_memory' condition only + if it was raised during the execution of the guarded code. + +03-Dec-2002 (Lars Duening) (3.2.9-dev.505) + - (patch-o-matic) Updated to new executable name. + - (prolang.y, array.c) The filenames returned by include_list() + now always start with a '/' to make their reuse in include statements + simpler (suggested by Coogan). + - (mudlib/telnet) Fiona donated the telnet negotiations module from + Wunderland, containing a complete implementation of the telnet protocol + (thanks!). + - (sprintf.c) The %O/%Q formatter stumbled over really large arrays + and mappings: the top-level function ignored if the conversion + routine reallocated the string buffer (reported by Bardioc). + +03-Dec-2002 (Lars Duening) (3.2.9-dev.504) + - (Makefile.in) Corrected two typos. + +03-Dec-2002 (Lars Duening) (3.2.9-dev.503) + - (main.c) Forgot to add the configurable efuns to the '--options' + output. + +02-Dec-2002 (Lars Duening) (3.2.9-dev.502) + - (func_spec, interpret.c) Efun member_array() is now deactivated + with !USE_DEPRECATED (suggested by Fiona). + - (configure, config.h, efuns, simulate, object, interpret.c): The + efuns set_light(), set_is_wizard() and process_string() can be + configured from the configure script. + - (Makefile) Driver executable renamed from 'driver' to 'ldmud'. + - (configure, Makefile) The configure script now tries to figure out + on its own which warning options the compiler supports. + +30-Nov-2002 (Lars Duening) (3.2.9-dev.501) + - (comm.c) Accidentally deleted two lines in the noecho handling. + +30-Nov-2002 (Lars Duening) (3.2.9-dev.500) + - (comm.c) Fiona provided a number of bugfixes for CHARMODE - thanks! + +30-Nov-2002 (Lars Duening) (3.2.9-dev.499) + - (prolang.y) Brainfart: the last patch created a problem, instead of + solving one. The bug was that "*"::fun() looked at _all_ inherited + programs, not just the directly inherited ones. + +30-Nov-2002 (Lars Duening) (3.2.9-dev.498) + - (prolang.y) When making wildcarded supercalls ("*"::fun()), the compiler + takes care that each function is called only once (reported by Gnomi). + +29-Nov-2002 (Lars Duening) (3.2.9-dev.497) + - (sysmalloc.c) This file is no longer needed (actually it has been + useless since 3.2.8-dev.188). + - (lex.c) pragma_combine_strings was never initialised with a default. + - (lex.c) Changed the FLOAT_MIN/FLOAT_MAX predefined to reflect + the C-float limits, not the C-double limits, as the gamedriver's + floats are somewhere inbetween the two. + +27-Nov-2002 (Lars Duening) (3.2.9-dev.496) + - (patchlevel.h, hosts/be/Makefile, hosts/be/set-version) The version + flags of the BeOS executable are now read from patchlevel.h and not set + directly in the BeOS Makefile. + +27-Nov-2002 (Lars Duening) (3.2.9-dev.495) + - (efuns.c) Efun transfer() was still incorrect. Funny though that + nobody noticed it before :-) (reported by Nostradamus). + +27-Nov-2002 (Lars Duening) (3.2.9-dev.494) + - (comm.c) The correction of the threads racing condition unfortunately + introduced a deadlock - Gawain found and fixed it (thanks!). + +27-Nov-2002 (Lars Duening) (3.2.9-dev.493) + - (efuns.c) Corrected the deprecated efun transfer(): the check + for dest->can_put_and_get() was implemented wrong (reported by + Nostradamus). + +27-Nov-2002 (Lars Duening) (3.2.9-dev.492) + - (comm.c) The thread-cleanup function now locks the structure before + performing the cleanup (suggested by Gawain). + +26-Nov-2002 (Lars Duening) + - (object.c) restore_object("#0:0") caught the driver in an endless loop + (thanks, Ctx!). + +22-Nov-2002 (Lars Duening) + - (prolang.y, interpret.c) The __INIT code is no longer restricted to + the first 64K of generated bytecode. + +21-Nov-2002 (Lars Duening) + - (etc/patch-o-matic) Contributed by Guandalug - thanks! + +20-Nov-2002 (Lars Duening) (3.2.9-dev.491) + - (closure.c, interpret.c) Corrected refcount errors in the handling + of soon-to-be dangling alien-lfun closures. + - (smalloc.c) Made sure that before each call to fatal() the thread-check + is reset. + +19-Nov-2002 (Lars Duening) (3.2.9-dev.490) + - (closure.c, interpret.c) In order to convert a dangling lfun closure + during a replace_program() into a dangling alien-lfun closure, the + closure needs to be created as alien-lfun in the first place (reported + by Pulami). + +17-Nov-2002 (Lars Duening) (3.2.9-dev.489) + - (many files) Pure source cosmetics: removed trailing spaces at lineends. + +16-Nov-2002 (Lars Duening) (3.2.9-dev.488) + - (smalloc.c) If the allocator ran out of memory, the exit handling + triggered the 'Multiple threads' safety check. Not really a problem, + as the driver would exit anyway, but it obscures what is happening. + +15-Nov-2002 (Lars Duening) (3.2.9-dev.487) + - (comm.c) The call to remove_flush_entry() could clobber the list + of players to flush if it was called for a player not in the + flush list. + +13-Nov-2002 (Lars Duening) (3.2.9-dev.486) + - (interpret.c) get_type_info(,2) on an unbound-lambda crashed the driver + because an uninitialized variable was used (thanks, Ctx!) + - (simulate.c) If the H_NOECHO hook is set, the telnet negotiations + are redirected only after the hook setting is verified (thanks, + Fiona!) + - (comm.c) Corrected a potential problem when an interactive object + with pending data is forcefully made non-interactive: from my + reading of the code it seems that the object remained in the + list of players-to-flush, even though it no longer had a valid + interactive_t attribute. + +12-Nov-2002 (Lars Duening) (3.2.9-dev.485) + - (port.h) The 'malloc' attribute is now used only with gcc 3 or newer. + - (lex.c) Corrected the line counting with auto-includes (reported by + Coogan). + +11-Nov-2002 (Lars Duening) (3.2.9-dev.484) + - (comm.c) When calling H_NOECHO, the code did not check if the + argument objects were still alive (reported by Fiona). + +08-Nov-2002 (Lars Duening) + - (port.h, comm.c, xalloc.h, smalloc.h) Activated GCC attributes for + OS-X compilations, added GCC attribute 'malloc' to the allocator + functions, removed some warnings. + +07-Nov-2002 (Lars Duening) (3.2.9-dev.483) + - (configure.in) The tests regarding which libraries are needed suffered + from a disabling typo (reported by Nostradamus). + - (port.h, hosts/unix.h) Adapted to the latest Cygwin release. + +06-Nov-2002 (Lars Duening) (3.2.9-dev.482) + - (closure.c) If a lfun-closure is left danging by a replace_program(), + it is now converted into an alien-lfun closure pointing to + master::dangling_lfun_closure(). This way the error handler has + a chance to determine the originating object (suggested by Gnomi). + - (closure.c) The handling of dangling alien-lfun closures actually + destroyed the alien.ob entry. + - (interpret.c) allocate() used with an array or mapping initialisation + value now creates shallow copies of the initialisation value for each + initialised element (suggested by Oskar). + +04-Nov-2002 (Lars Duening) (3.2.9-dev.481) + - (smalloc.c) The thread-check in xfree() also triggered when the + memory reserves were released (reported by Bardioc). + +03-Nov-2002 (Lars Duening) + - (configure.in) Made the check for -lpthread more robust (reported by + Markus Peter). + +03-Nov-2002 (Lars Duening) + - (configure.in) Made the check for -lpthread more robust (reported by + Markus Peter). + +01-Nov-2002 (Lars Duening) (3.2.9-dev.480) + - (comm.c) *blush* Deleted TELOPT_EOR handling by act of stupidity.. + +31-Oct-2002 (Lars Duening) (3.2.9-dev.478, -dev.479) + - (comm.c) Added TELOPT_BINARY to the telnet negotiations forwarded + to H_TELNET_NEG (suggested by Fiona). + +30-Oct-2002 (Lars Duening) (3.2.9-dev.477) + - (lex.c) When starting a new compile, the order of initialisations + was wrong (in particular: auto-include was handled before the + lexer was set up) (reported by Freaky). + - (configure, (x)erq/Makefile.in) Only link in libraries actually + needed by the erq (suggested by Freaky). + - (configure) Modified the configure so that only required libraries + are added to the compile (suggested by Freaky). + +29-Oct-2002 (Lars Duening) (3.2.9-dev.476) + - (comm, func_spec) find_input_to() and remove_input_to() can now + match on both object and string name. + - (interpret.c) unquote(symbol) added a quote level instead of + removing it (reported by Gnomi). + - (comm.c) Improved the 'already bound' error messages to list + the port number. + - (util/xerq) If the xerq couldn't send all data from a ERQ_SEND request + immediately and thus returned a ERQ_E_INCOMPLETE, it will follow it + up with a ERQ_OK message to the same handle later once all the pending + data has been send (provided by Fiona, thanks!) + - (util/xerq/lpc) Replaced the socketd with the Wunderland daemon + (thanks!). + - (lex.c, prolang, simulate.c) auto-includes are now handled like + normal includes (instead of just placing the text into the textbuffer + and fudging the current_line variable), correcting a source of false + linenumber informations. + +27-Oct-2002 (Lars Duening) (3.2.9-dev.474, .475) + - (smalloc.c) Added a very primitive safeguard against interleaving + calls to the allocator - I suspect that this is the root cause + for the problems with pthreads. + - (object.c) When resetting an object, the previous_object() was + some random object (reported by Gnomi). + - (comm, func_spec) New efuns find_input_to() and input_to_info() + (suggested by Fiona). + +16-Oct-2002 (Lars Duening) (3.2.9-dev.473) + - (configure) Some systems need libresolv in order to provide + herror() (reported by Coogan). + - (comm.c) Removed a compile warning (thanks, Fiona!). + - (array.c) regexplode: Removed a memory leak on stack overflow + (thanks, Fiona!). + +15-Oct-2002 (Lars Duening) (3.2.9-dev.472) + - (exec.h, lex.c, prolang, object, gcollect.c, typedefs.h) Added + complete include file information to compiled programs (backported + from 3.3). + - (object.c) Implemented efun include_list() properly (backported + from 3.3). + - (prolang.y) Adapted to bison 1.5 . + +14-Oct-2002 (Lars Duening) + - (configure) If a requested option (like use-mysql) can't be used + because the system lacks the necessary support, the configure + script issues a warning and exits with return code 1 (suggested + by Freaky). + +13-Oct-2002 (Lars Duening) (3.2.9-dev.471) + - (prolang.y) Removed a compiler warning. + - (configure.in) The test for pthread support was broken, and + the test for 'long long' was run twice. And if pthreads + are not found, USE_PTHREADS is now deactivated (reported by Freaky). + +10-Oct-2002 (Lars Duening) (3.2.9-dev.470) + - (efuns.c, svalue.h, interpret.c) Evaluation cost of deep_copy() is + now proportional to size and nesting depth of copied arrays + and mappings, if DYNAMIC_COST is defined (suggested by Gnomi). + +09-Oct-2002 (Lars Duening) (3.2.9-dev.469) + - (port.h, swap.c) No longer includes which has been obsoleted + by and . + - (config.h, driver.h) Removed the compilation warning when YYDEBUG + was not defined. + - (mud/lp-245) Corrected the transfer() simul-efun (thanks, Ralph!) + +09-Oct-2002 (Lars Duening) (3.2.9-dev.467, .468) + - (lex.c, prolang) Implemented #'inh::fun lfun closures (b-010801-0). + +07-Oct-2002 (Lars Duening) (3.2.9-dev.466) + - (comm.c) Removed compilation problems with BeOS. + - (prolang.y) Oh My Ghod. The range index [..] created faulty + bytecode, maybe even clobbered random memory, if the expression + was anything complicated, like 'm++' or 'm = 4'. This bug + was caused by uninitialized the LPC parser not initializing + the internal return value from parsing , so the bug + didn't manifest itself every time (reported by Zonk). + +04-Oct-2002 (Lars Duening) (3.2.9-dev.465) + - (autoconf/configure.in) Corrected the problem with newer autoconfs. + +01-Oct-2002 (Lars Duening) (3.2.9-dev.464) + - (comm.c) Forgot a parameter in an error message (thanks, Freaky!) + - (main.c, comm) The hostname was initialized to late, so the debug.log + file was opened with the wrong name (reported by Dafire). + +30-Sep-2002 (Lars Duening) (3.2.9-dev.463) + - (comm.c) Changed the fprintf() in the thread cleanup routine into a + malloc-friendlier dprintf1(). + - (main.c) Added a check into debug_message() if the name of the + debug log file has already been set (reported by Dafire). + - (simulate.c) The driver now checks if an object to be loaded appears + out of nowhere while it is being compiled (this can happen if the mudlib + warning handler is careless with rename_object()) and throws an error + (reported by Gnomi). + - (main.c, comm) New commandline options --hostname and --hostaddr + to override the values returned by the system. In particular, + --hostaddr will be used as the address to open to the driver + ports. + +28-Sep-2002 (Lars Duening) + - (config.h.in) USE_PTHREAD was permanently commented out (reported by + Gawain). + +27-Sep-2002 (Lars Duening) (3.2.9-dev.461+.462) + - (comm, main.c, configure) Based on a patch by Gawain, PTHREADS and + PCRE (requires Fiona's patch) can now be configured like other + options. New commandline option --max-thread-pending to set + the limit for pending data to write. + +25-Sep-2002 (Lars Duening) + - (comm.c) If a connection is marked for removal (.do_close != 0), + telnet commands can still be sent. This is to allow the input_to() + handling to properly reset the connection to linemode even if + the input_to() handler has called remove_interactive(). + - (backend, interpret.c, smalloc.c) Made the GC request log output + nicer. + +25-Sep-2002 (Lars Duening) (3.2.9-dev.460) + - (comm, gcollect.c) Removed compiler warnings, and a crash + in pthreads thread cleanup (reported by Dafire) + +25-Sep-2002 (Lars Duening) (3.2.9-dev.459) + - (interpret.c) The LPC tracing code crashed when used with lambda + closures or with call_resolved() (reported by Nostradamus). + +24-Sep-2002 (Lars Duening) (3.2.9-dev.458) + - (comm, backend.c, gcollect.c) smalloc is not threadsafe, which + caused the implementation of USE_PTHREAD code to trash the + memory structures. To solve the problem, all memory allocations + and deallocations are done by the main thread. + Patches from Guandalug: + - (interpret.c) Converting a sefun-closure to a string looked up the + name in the efun table instead of the sefun table. + +20-Sep-2002 (Lars Duening) (3.2.9-dev.457) + - (prolang.y) The test for duplicate toplevel inherits got confused + when virtual inherits occured (reported by Zonk via Dafire). + +19-Sep-2002 (Lars Duening) + - (etc/lpc-mode.el) LPC mode for EMACS, by Vivek Dasmohapatra. + +17-Sep-2002 (Lars Duening) + - (comm.c) ECONNREFUSED is recognized as error (suggested by Coogan). + +16-Sep-2002 (Lars Duening) + - (comm.c) With PThreads: forgot to detach new threads after creation + (thanks, Gawain!) + - (configure) The object statistic seems to be correct now, so the + OSTAT diagnostics are disabled by default. + +15-Sep-2002 (Lars Duening) (3.2.9-dev.456) + - (simulate) Both 'warn' and 'warning' are already symbols on + some systems, so I now used 'warnf' as name of the warning + function. + - (regexp, rxcache, array.c, backend.c, ed.c) Removed name clashes + with system libraries. + +15-Sep-2002 (Lars Duening) (3.2.9-dev.455) + - (prolang.y, lex, interpret.c, simulate, func_spec) New pragma + 'warn_deprecated' causes the compiler to print warnings when + a deprecated efun is used (suggested by Dafire). + +03-Sep-2002 (Lars Duening) (3.2.9-dev.454) + - (swap.c) The object statistics get messed up when the GC swaps objects. + Let's see if this change corrects all of the discrepancies. In + general the reason for the discrepancies was that variables + were counted more often as 'swapped in' than they had been + swapped out. + +30-Aug-2002 (Lars Duening) (3.2.9-dev.453) + - (efuns.c, lex.c, make_func.y) Some chars were casted to 'unsigned int' + instead of 'unsigned char', breaking support for international + character sets (thanks, Oskar!). + +26-Aug-2002 (Lars Duening) + - (swap.c) The OSTAT diagnostic for swap-in subtracted instead of added + to compute the expected new tot_alloc_object_size value (reported + by Coogan). + +21-Aug-2002 (Lars Duening) + - (object.c) Oops, omitted one argument in one of the OSTAT outputs. + +21-Aug-2002 (Lars Duening) (3.2.9-dev.452) + - (comm.c, object.c, simulate.c, swap.c) Corrected some warnings + (reported by Dafire). + - (interpret, and some more files) Master applies caused by external events + (like ERQ messages) are now distinguished from internal calls + (like valid_write()) so that the error handling for external calls + receive the full eval cost benefits (suggested by Fiona). + - (Makefile.in s): Added missing @EXEEXT@ tags. + +20-Aug-2002 (Lars Duening) (3.2.9-dev.451) + - (main.c) Needed to #include on Solaris to get the + MAXHOSTNAMELEN macro (thanks, Coogan). + - (util/erq/erq.c, util/xerq/erq.c) Forgot the timestamp in the + initial startup message. + - (port, simulate.c, comm.c, hosts/unix.h) Cygwin corrections. + - (config.h, configure, driver.h, erqs) New configuration option + with-erq-debug sets the new config.h macro ERQ_DEBUG which + defines the ERQ debug level. No more '-DDEBUG' to enable + the debugging code in the ERQs (suggested by Bill). + +19-Aug-2002 (Lars Duening) (3.2.9-dev.450) + - (closure.c) Efun symbol_efun() freed symbol-svalues as strings + (reported by Dafire). + +19-Aug-2002 (Lars Duening) (3.2.9-dev.449) + - (lex.c) An error in a permanent define given on the command line + would crash the driver because the lexer called error() before + the VM had been set up. + - (Makefile.in) Some makes don't like ':=' variable assignments (reported + by Coogan). + - (main.c) If the driver uses the default debug.log file, its (mudlib) + name is available in the predefined macro __DEBUG_LOG__ (suggested + by Mandragon). + - (driver.h, config.h) Made the config.h macro DEBUG invisible to the + ERQs as their debugging mode is controlled by their Makefiles. + - (util/erq/erq.c, util/xerq/erq.c) The ERQs now print their name + and compilation date to stderr on startup. + +18-Aug-2002 (Lars Duening) (3.2.9-dev.448) + - (lex.c) Added predefined macros __RESET_TIME__ and __CLEANUP_TIME__ + (suggested by Elric). + +14-Aug-2002 (Lars Duening) + - (configure) Optimization option -funroll-all-loops seems to + create buggy code, so I removed it from the configure. + +14-Aug-2002 (Lars Duening) (3.2.9-dev.447) + - (comm.c) Compilation broke under BeOS. + - (object.c, swap.c, simulate.c) Removed warnings. + - (Makefile.in) Removed a GNUMake'ism (reported by Coogan). + +13-Aug-2002 (Lars Duening) (3.2.9-dev.446) + - (configure) The VERBOSE_OPCPROF define in config.h got clobbered. + - (interpret.c) I removed the copy-on-write for mappings again - + it broke more than it fixed. + +12-Aug-2002 (Lars Duening) (3.2.9-dev.445) + - (lex.c) New predefined macros __CATCH_EVAL_COST__ and + __MASTER_EVAL_COST__ to carry the corresponding + configuration options over to LPC (suggested by Menaures). + - (Makefiles, configure, config.h) Moved the debugging options into + config.h to ensure clean recompilations, and made them + configurable through the normal configure mechanism. + +11-Aug-2002 (Lars Duening) + - (driver.h, object.c, simulate.c, swap.c) Defining debug macro + CHECK_OBJECT_STAT allows tracing of all changes to the + tot_alloc_object(_size) statistics. Aim is to find the + discrepancy in the 'status' command. To activate the + tracing, the commandline option '--check-object-stat' must + be given. + - (interpret.c) The operations += and -= + now implement the copy-on-write semantic to mirror the + behaviour of the related array operations (suggested by Dafire). + - (interpret.c) get_type_info(,2) did not return the + bound object for efun, simul-efun and operator closures + (reported by Gnomi). + - (interpret.c) Attempting to replace a program in an object + which already has closures bound no longer raises an error, + but issues a debug_message() (suggested by Pulami). + - (make_func.y) Removed two warnings by bison (reported by Gawain). + +10-Aug-2002 (Lars Duening) (3.2.9-dev.444) + - (closure.c) In efun symbol_function(), symbols were freed as + strings (reported by Freaky). + - (main, backend.c) Signal USR2 forces the driver to reopen the + host.debug.log file (thanks, Gawain!). + - (comm, gcollect.c) Experimental: Defining USE_PTHREAD (if your + system has pthread support) activates code which uses threads + to write the socket data to the network in the background. + Intention is to avoid EWOULDBLOCK errors on slow connections + (thanks, Gawain!) + +08-Aug-2002 (Lars Duening) + - (comm.c) When using IPv6, get_host_ip_number() used a too small + buffer (thanks, Fiona!) + - (backend.c) Improved the 'doing a GC' messages somewhat. + +05-Aug-2002 (Lars Duening) (3.2.9-dev.443) + - (mapping.c) Embarassing: the bugfix broke map() and filter() + for all non-multi-value mappings (reported by Casey). + +04-Aug-2002 (Lars Duening) (3.2.9-dev.442) + - (prolang.y) Inheriting the same program twice at the top level + now raises a warning, resp. an error in pedantic mode. + - (simulate.c) If a closure is called from limited() and self-destructs, + the driver would try to free the now-invalid closure argument + and crash (this happened a lot in EotL) (thanks, Casey!). + - (interpret.c) In DEBUG mode, the functions free_object_svalue() and + free_string_svalue() check that they really get the proper data type. + - (efuns.c) Efuns filter() and map(): when used with multi-value + mappings, the driver checks if the called function kept a reference + to the passed array with the values. If yes, a new array is + created for the next iteration to avoid overwriting the old + one (reported by Fiona). + - (interpret.c) When collecting the traceback in a catch(), the + file and line information was used, but not initialized, occasionally + crashing the driver. In addition, in a couple of cases when the + file and line information can't be determined, the file was + left undefined (thanks, Gnomi!) + +15-Jul-2002 (Lars Duening) (3.2.9-dev.441) + - (mud/lp-245) The wizlist() simul-efun didn't print proper failure + notices (reported by Vandergnome). + - (gcollect.c) In a GC the list of destructed objects was handled + last, by which time the list might already have been clobbered. + Moving the handling first should plug a memory leak (reported by + Dafire). + - (prolang.y) The crasher correction from dev.439/dev.440 still had + a small bug which caused variables and functions to be assigned + wrongly (reported by Fiona and Gnomi, fixed by Menaures). + - (prolang.y) If a variable was inherited multiple times, the driver + generated a senseless warning (reported by Zora). + - (efuns.c, interpret.c, main.c) Added some support for locales; in + particular the driver now uses the locale defined in the LANG + environment variable for character conversions (thanks, Oskar!). + - (simulate.c) Efun callbacks misparsed the arguments when only the + function name and extra arguments, but no object was provided. + +14-Jul-2002 (Lars Duening) + - (etc/memusage) Fiona updated the script to make it more robust and + work with the new OBJ_DUMP format. Furthermore the constants + for $DOMAINS and so on do work now. + +05-Jun-2002 (Lars Duening) (3.2.9-dev.440) + - (prolang.y) Oops, yesterday's bugfix was not quite corrected. + +04-Jun-2002 (Lars Duening) (3.2.9-dev.439) + - (prolang.y) If a method in a virtual inherit is rendered invisible, + but also made available again through a parallel inherit of the same + program, the compiler resolved the visible function to the + wrong inheritance, causing the driver to crash (b-020530). + +13-May-2002 (Lars Duening) (3.2.9-dev.438) + - (config.h.in, Makefile.in, autoconf/configure.in) TRACE_CODE + is now configurable through the configure script, and thus + is located in config.h and no longer in Makefile. + - (gcollect, interpret.c, func_spec) Optional filename argument + to efun garbage_collection() can specify a new GC log file + for the next GC. The filename is validated through + master::valid_write() (f-020312). + +07-May-2002 (Lars Duening) (3.2.9-dev.437) + - (mapping.c) Improved the checks for empty mappings in add_mapping() + and add_to_mapping(). + - (mapping.c) 'mapping += mapping' now throws an error when the + mappings are of differing width (reported by Alfe and Coogan). + - (prolang.y) New notation '([:])' as shortcut for + m_allocate(0, ) (suggested by Alfe). + +06-May-2002 (Lars Duening) (3.2.9-dev.436) + - (smalloc.c) With CHECK_OBJECT_GC_REF, small chunks could lead to + misleading diagnostics during the GC. + +03-May-2002 (Lars Duening) (3.2.9-dev.435) + - (prolang.y) Reworked the program block reallocations to make sure + that their bounds won't be overwritten. This could have been + the reasons for the crashers on corrupted memory (reported by Coogan). + +01-May-2002 (Lars Duening) + - (settings/dt2) Updated the DeeperTrouble settings file; and also + removed the mud/dt2 directory since it's no longer necessary + (thanks, Lasse!). + +26-Apr-2002 (Lars Duening) (3.2.9-dev.434) + - (prolang.y) Hiding an inherited private nosave variable with an + inherited non-private variable didn't work (reported by Gnomi). + - (prolang.y, lex.c, simulate.c) Compiler error and warning messages + all have the format ' line : ' now. + - (prolang.y, swap.c) Oops, the linenumber structure was allocated too + small on creation, and read in incorrectly from swap. + - (driver.h) Deactivated the debug defines CHECK_MAPPING_TOTAL + and CHECK_OBJECT_REF since these bugs seem to be fixed. + +25-Apr-2002 (Lars Duening) (3.2.9-dev.433) + - (comm.c) Using unbound lambdas for prompts crashed the driver + (reported by Gnomi). + - (driver.h, gcollect, smalloc) When macro CHECK_OBJECT_GC_REF is + activated, every supposedly non-object memory reference in a GC is + checked if it points to an object. If yes, a diagnostic is printed + to gcollect out. Requires MALLOC_TRACE to work. + +21-Apr-2002 (Lars Duening) (3.2.9-dev.432) + - (exec.h, prolang.y, interpret.c, object.c, swap.c) Linenumbers are + now kept in a separate memory block, which makes swapping them + out and back in simpler. + +20-Apr-2002 (Lars Duening) (3.2.9-dev.431) + - (prolang.y, lex.c) Calls to the master during a compilation now check + the available evaluation costs. If the limit is exceeded, a + compilation error is generated. + - (swap.c) Removing a program block from the swap no longer crashes + if the program doesn't have line numbers (reported by Pixie). + - (prolang.y) Calls to undefined functions now generate a warning + when detected in functions without typechecking if #pragma + pedantic is in effect (before the compiler silently inserted + a prototype). + +19-Apr-2002 (Lars Duening) + - (prolang.y) Removed a few bison warnings (reported by Menaures). + +18-Apr-2002 (Lars Duening) (3.2.9-dev.430) + - (prolang.y) When passing a wrong argument to a varargs function, the + error message gave the wrong argument number (reported by Gnomi). + - (func_spec, interpret.c) New efun m_add(). + +09-Apr-2002 (Lars Duening) (3.2.9-dev.429) + - (prolang.y) The improved type checking on = accidentally + broke the type checking on the plain assignment (reported by Dafire). + +08-Apr-2002 (Lars Duening) (3.2.9-dev.428) + - (prolang.y) Improved the type checking on the = operators + to match what the VM actually implements (reported by Menaures). + +04-Apr-2002 (Lars Duening) (3.2.9-dev.427) + - (mapping.c) During a GC, the .hash member in a mapping does not + point to a mapping-hash structure - the statistics code + ignored that (b-011015-0). + - (gcollect, swap.c) Made the GC status variable less reliant + on magic numbers. + - (swap, gcollect.c, object.c, simulate.c) When removing the swap + entry for a modified program, the code now also makes sure + that the linenumbers are loaded back into memory. + +03-Apr-2002 (Lars Duening) (3.2.9-dev.426) + - (prolang.y) ' *= ' didn't compile (reported by Dafire and + Menaures). + - (swap, gcollect.c, object.c, simulate.c) A hunch: when a program is + swapped for the first time, the driver writes the struct as it + is to the disk. On later swap-ins, this data is read directly + into memory, but never written again. If in the meantime + the prog->blueprint pointer changed, this change will be lost + after the next swap in. It would require a rare sequence of + activities to make this a problem, but it's possible. The change + is therefore to remove the swap block whenever prog->blueprint + changes; let's see if this helps (b-020228-0). + +31-Mar-2002 (Lars Duening) (3.2.9-dev.425) + - (simulate.c) Load errors during the initial master load crashed + the driver in the error handling. + +30-Mar-2002 (Lars Duening) (3.2.9-dev.424) + - (driver.h) The blueprint code helped some people (but not all), so I + re-activated it as a counter-check. + - (bugs/) Updated the files. + +27-Mar-2002 (Lars Duening) (3.2.9-dev.423) + - (mapping.c) *sigh* The mapping check itself contained a fatal error + (reported by Freaky). + - (wiz_list.c) Don't call master::get_wiz_name() when there is no + master. Otherwise a simple warning during the initial master + load would abort the driver (reported by Frank Syse). + - (driver.h, lots of files) If debug macro NO_BLUEPRINT is defined, + the driver no longer tracks the blueprint for a program structure. + This somewhat disables the blueprint() efun, but if it solves + the object refcount problem, I know at least where to look. + - (func_spec, actions, interpret.c) Efun query_verb() now takes an optional + flag to return the verb as specified in the add_action() instead + of the verb given by the user (suggested by Dafire). + +26-Mar-2002 (Lars Duening) (3.2.9-dev.422) + - (array.c, mapping.c) Made sure that the callback structures are + properly released on errors. + +25-Mar-2002 (Lars Duening) + - (lex.c) *sigh* 'ifstate_t' is also a system type (reported by Alwin). + - (comm.c) Removing the last pending input_to() did not reset the + 'input_to pending' flag in the interactive structure (reported + by Gnomi). + - (mapping) The inaccuracy in the mappings statistics is caused + by impossibly high numbers of mapping elements. The checks + done by CHECK_MAPPING_TOTAL have been tightened around possible + places where the too big number could be created. + +21-Mar-2002 (Lars Duening) (3.2.9-dev.421) + - (lex.c) The lexer's 'struct ifstate' clashes with an 'enum ifstate' + defined on some systems for the networking stack (reported by Alwin). + - (interpret.c) Removed the negative indexing on control_stack + and value stack by introducing dummy entries at the bottom of + each. + +19-Mar-2002 (Lars Duening) (3.2.9-dev.420) + - (pkg-mysql.c) db_connect() didn't check if it got too many arguments, + crashing in that case (reported by Menaures). + - (interpret.c) CHECK_OBJECT_REF: Checking the destructed objects + after every VM instruction used too much time - it is now limited + to F_RETURN, vefuns and tefuns. + +16-Mar-2002 (Lars Duening) (3.2.9-dev.419) + - (lex.c) Fixed a memory leak, caused again by a piece of code which + relied on free_svalue() not changing the svalue .type (reported + by Alwin). + - (simulate.c) Setting a driver hook from an unshared string leaked + this string (reported by Alwin). + - (array.c) And this should be the last piece of code which made + assumptions about free_svalue(). + - (func_spec, efuns) New efun blueprint(). + +13-Mar-2002 (Lars Duening) (3.2.9-dev.418) + - (mapping.c) Since free_svalue() no longer leaves the .type untouched, + the CHECK_MAPPINGS sanity stumbled at one point (reported by Bardioc). + +12-Mar-2002 (Lars Duening) (3.2.9-dev.417) + - (lex.c) Efun expand_define() did not set the proper type + for the return value - so far undiscovered because free_svalue() + didn't use to change it. + - (Makefiles) Changed default optimization level from High (-O4) + to Medium (-O2), since compilers get notoriously unreliable + at high optimization. + +11-Mar-2002 (Lars Duening) (3.2.9-dev.416) + - (simulate.c) The CHECK_OBJECT_REF check was still overzealous; + unfortunately not with the FF mudlib I tested it with. Hmpf. + - (xalloc.c) The heap/stack gap check didn't expect the stack to + be located under the heap, as Cygwin does it. + +10-Mar-2002 (Lars Duening) (3.2.9-dev.415) + - (actions.c, simulate.c) The CHECK_OBJECT_REF check was overzealous + and didn't track properly the changes in object sentences. Sorry. + - (interpret.c) Efun all_environment() did not accept destructed objects + as argument as documented (reported by Pulami and Gnomi). + +09-Mar-2002 (Lars Duening) (3.2.9-dev.414) + - (xalloc) The implementation of the heap/stack check didn't work + on architectures with really big address spaces - corrected that. + - (mapping.c, interpret.c, object.c, efuns.c) When adding new values + to mapping, the code didn't check if the memory could be allocated + (reported by Menaures). + - (doc/efun) More german translations from Pulami. + +07-Mar-2002 (Lars Duening) (3.2.9-dev.413) + - (xalloc, smalloc.c interpret.c, efuns.c, object.c) Added check + to prevent the stack from growing into the heap. + - (smalloc.c) Some expected/found magic word logs were reversed. + - (interpret.c) atan2() did not accept an integer as first argument + (reported by Pulami). + - (doc/efun) Pulami provided a whole bunch of german translations. + - (interpret.c) to_int() on closures didn't work as advertised + (reported by Pulami) + +06-Mar-2002 (Lars Duening) (3.2.9-dev.412) + - (simulate, interpret.c, gcollect.c) With CHECK_OBJECT_REF, the + driver continually checks the consistency of the list of + destructed objects. + - (doc/efun/get_dir) Updated the manpage and added the german + version (both provided by Pulami). + +05-Mar-2002 (Lars Duening) (3.2.9-dev.411) + - (efuns.c) deep_copy() didn't handle quoted arrays properly (reported + by Gnomi). + - (interpret.c) New efun unquote() (suggested by Gnomi). + - (object, gcollect.c, driver.h) Debug macro CHECK_OBJECT_REF activates + a trace of blueprint allocations/deallocations, to be used to debug + the strange refcount bugs recently encountered (b-020228-0). + +04-Mar-2002 (Lars Duening) (3.2.9-dev.410) + - (prolang.y) Publically inheriting functions which had been inherited + protected before now overrides the earlier inherit (f-020303-1). + - (ptrtable.c) When allocating a new ptable, the .table[] member is + cleared. + - (simulate.c) New get_dir() flag GETDIR_PATH adds the full absolute + pathname to the returned filenames (suggested by Pulami). + - (interpret.c) If a value of the wrong type is passed to a switch, + the driver no longer throws a runtime error but instead + jumps to the 'default' case (suggested by Pulami). + +03-Mar-2002 (Lars Duening) (3.2.9-dev.409) + - (simulate.c) When the driver runs on a fatal error, it calls + the master lfun notify_shutdown() with "Fatal Error" as argument + before it dumps core. + - (configure) Added a check for 'bison -y' when looking for YACC. + +28-Feb-2002 (Lars Duening) (3.2.9-dev.408) + - (simulate, efuns.c, gcollect.c, interpret.c) In addition to the + last uncaught-error trace, debug_info() can now also return + the last error trace in general. + +27-Feb-2002 (Lars Duening) + - (smalloc.c) Corrected the statistics adjustment during the freelist + consolidation. + - (backend.c) The check_alarm() method did not recognize the '--no-heart' + option, eventually turning the alarm() back on (reported by Dafire). + +26-Feb-2002 (Lars Duening) (3.2.9-dev.407) + - (efuns.c) Adjusted the terminal_colour() sanity check to acknowledge + a certain boundary condition; added a test to make sure that + the indentation is smaller than the wrapping width (reported + by Menaures). + - (actions.c) An error in add_action() could cause the driver to free + memory twice (reported by Menaures). + - (mapping.c) Several allocations weren't checked for success (reported + by Menaures). + +22-Feb-2002 (Lars Duening) (3.2.9-dev.406) + - (mapping.c, smalloc.c) Improved the diagnostic messages: all are + now printed to the GC log where they belong. + - (smalloc.c) Added more data to the statistics diagnostics, by + default deactivated since I can debug it over time in OSB. + - (simulate.c) Made the load_object_error() method resistant + against object names with printf format specifications (reported by + Gnomi). + - (mudlib/uni-crasher) Added Menaures' test object to the archive. + +21-Feb-2002 (Lars Duening) + - (smalloc.c) Oops, the statistics diagnostic lacked the 'DEBUG:' + tag. + +20-Feb-2002 (Lars Duening) (3.2.9-dev.405) + - (prolang.y) Variable definitions are now normal statements and + as such no longer restricted to the beginning of a block (f-000430-1). + +17-Feb-2002 (Lars Duening) (3.2.9-dev.404) + - (prolang.y) In a for() loop, variables may now be declared without + initialisation (e.g. 'for (int i; ...)') (suggested by Pulami). + - (random.c) Tentatively modified the scaling of the raw random number + to the desired range so as to avoid overflow problems (investigated by + Collin Baillie for an Alpha machine). + +15-Feb-2002 (Lars Duening) + - (prolang.y) The byte move routine to implement call_other sefuns + by using call_other moved bytes in the wrong direction, + crashing the driver if this piece of code was executed (reported by + Coogan). + - (simul_efun.c) simul-efuns shadowing real efuns were not properly + discarded, making it impossible to reactive them (which in a + way was lucky as it made it possible to find the call_other bug). + - (interpret.c) The error handling for a secure call did not + properly roll back the control stack, leaking any closure + referenced from it (b-990505-0). + +13-Feb-2002 (Lars Duening) (3.2.9-dev.403) + - (efuns.c) Efun copy_bits(): I accidentally had deleted the lines + handling negative deststart values. The efun was also + prone to numerical overflow effects (reported by Menaures). + - (gcollect.c) Hmm, clear_object_ref() unconditionally cleared + the blueprint reference - this should happen only for + destructed blueprints. Dunno if this was responsible for + the recent crashes in FinalFrontier. + - (sprintf.c) sprintf("%-=10s", "a\nb\n") printed two extra + newlines at the end instead of just one (reported by Gnomi). + +11-Feb-2002 (Lars Duening) (3.2.9-dev.402) + - (comm.c) If on shutdown players were already destructed in + notify_shutdown(), the following remove_player() was passed + destructed objects (reported by Dafire). + - (efuns.c) Corrected a crasher in the new efun copy_bits(). + - (efuns.c) copy_bits() malfunctioned if src range to copy ended + in unset bits (reported by Menaures). + - (efuns.c) In efun terminal_colour(), the wrapping analysis had + to be separated from the initial length gathering since the + analysis requires all lengths to be available. Without the + separation, the driver ran into a fatal sanity error on some + input values (reported by Dafire). + - (actions.c) Argument errors in add_action() would leak the + action sentence. + +09-Feb-2002 (Lars Duening) (3.2.9-dev.401) + - (efuns, func_spec) New efun copy_bits() to copy ranges of + bitstrings (based on code provided by Menaures). + - (interpret.c) And nobody noticed that set_bit() was broken :-) + - (efuns.c) Efun terminal_colour(): In wrapped formatting, when a + word is too long to fit on a line by itself and there are at least + two characters space left on the current line, the long word is begun + immediately. Previously, such long words were always printed on a + line of their own (suggested by Fiona). + +07-Feb-2002 (Lars Duening) (3.2.9-dev.400) + - (ed, comm, efuns) Modified the print_prompt() routine so that + the editor prompt is take directly from the editor buffer. + This allows to get rid of the swapping of editor and normal command + prompts, which may also have been responsible for the memory + leaks reported in b-020205-0 (though I can't prove that). As an + aside, the f_set_prompt() function moved from efuns.c to comm.c . + - (actions.c) If notify_fail() was not used from an undestructed + command giver, the given failure notice value leaked (b-020205-1). + +07-Feb-2002 (Lars Duening) (3.2.9-dev.399) + - (bugs/) Cleaned up the bug reports. + +06-Feb-2002 (Lars Duening) (3.2.9-dev.398) + - (sprintf.c) In justified column formatting, when a word is too + long to fit on a line by itself and there are at least two characters + space left on the current line, the long word is begun immediately. + Previously, such long words were always printed on a line of their + own (suggested by Fiona). + +06-Feb-2002 (Lars Duening) (3.2.9-dev.397) + - (bugs) Added more information about memory leaks. + +05-Feb-2002 (Lars Duening) (3.2.9-dev.396) + - (mapping.c) The diagnostic in count_mapping_size() forgot to check + for a NULL uid (thanks, Ben!) + - (prolang.y) Inherited public but undefined function were hidden + by (simul-)efuns of the same name, making a resolution by + crossdefinition through another inherited module impossible + (reported by Fiona). + +03-Feb-2002 (Lars Duening) (3.2.9-dev.395) + - (simulate, prolang.y, lex.c) Added a limit safety check to + limit_error_format(), and increased the buffer sizes for the + error messages (reported by Gnomi). + +01-Feb-2002 (Lars Duening) + - (smalloc.c) Added a check routine for the 'Total small memory' + statistics - I think there is a miscalculation in the + freelist consolidation. + +31-Jan-2002 (Lars Duening) (3.2.9-dev.394) + - (mapping.c) Added diagnostic statements to count_mapping_size() + in order to find the place where the mappings statistics + is screwed up. + - (interpret.c) If input_to() was used without command giver, + a NULL pointer string was pushed onto the interpreter stack + due to a missing check in the privilege_violation4() + function (reported by Menaures). + +30-Jan-2002 (Lars Duening) (3.2.9-dev.393) + - (gcollect.c) The GC forgot to clear the refcounts in the known + destructed objects, thus sometimes causing a 'First reference + to program, but refcount != 0' fatal error (reported by Coogan, + reproduced by Menaures). + - (interpret.c) replace_program() without argument can now skip + the extra inherits added by the compiler to accomodate + virtual variables (reported by Nathan). + +26-Jan-2002 (Lars Duening) (3.2.9-dev.392) + - (prolang.y) The wildcarded supercall "*":: no longer throws an + error if none of the inherited objects defines the called function. + It fits into the semantics of the '*' wildcard ("any or none"), and + it is practical for supercalls like "*"::reset() (suggested by + Zonk@Finalfrontier via Dafire). + +25-Jan-2002 (Lars Duening) (3.2.9-dev.391) + - (object.c) Made an error message more informative. + +23-Jan-2002 (Lars Duening) (3.2.9-dev.390) + - (prolang.y) The '::' operator did not recognize the separate + namespaces of local variables and functions (reported by + Imp via Gnomi). + - (func_spec, prolang.y, interpret.c) Added new bytecode instructions + nconst1 and nnumber to handle negative constants better (especially + __INT_MIN__) (reported by Menaures). + - (efuns.c, interpret.c, mapping.c) check_map_for_destr() wasn't + called before copying or subtracting mappings (reported by Coogan). + - (strfuns) Added some 'const' qualifiers. + - (simulate.c) Improved the loadtime error messages: they now print + the inheritance chain (suggested by Gnomi). + - (etc/memusage) Provided by Fiona - thanks! + +17-Jan-2002 (Lars Duening) (3.2.9-dev.389) + - (interpret.c) The division / used a random + value for the divident (reported by Pulami). + - (simul_efun, simulate.c) Destructing the simul-efun object + immediately invalidates all simul-efuns; this should reduce + the number of 'undefined function' errors when doing manual + reloads of the simul-efun object. + - (make_func.y) Removed a small memory leak. + - (smalloc.c, prolang.y, closure.c) Modified some memory accesses + in order to keep Memory Check tools like ZeroFault happy. + - (regexp.c) The .from_ed member in a newly compiled regexp + wasn't set. + - (object.c) One variable wasn't set. + +16-Jan-2002 (Lars Duening) + - (simul_efun) When reloading the simul-efun objects, all previous + sefuns are discarded and removed from the symbol table. Otherwise + if the simul-efun object used cross-defined sefuns itself, the + recompiled object would not recognize the cross-defined calls + and instead pick up the older inactive entry from the symbol + table. This problem may still occur when reloading a simul-efun + object by hand (reported by Coogan and some other people). + - (lex) Inferior identifier entries now have their own string + reference. + - (lex.h, prolang.y) The magic values for ident_t.u.global now + have symbolic names. + +15-Jan-2002 (Lars Duening) + - (configure) Fiona did more analysis on the rxcache hash and found + out that using a prime table size doesn't help. I set the size back + to 8192; let's see how bad the collisions are at this small table + size. + +14-Jan-2002 (Lars Duening) + - (interpret.c) The overflow error messages for float divisions + named the wrong values (thanks, Guandalug!). + +12-Jan-2002 (Lars Duening) (3.2.9-dev.388) + - (configure.in) Fiona pointed out that just halving the rxcache + size doesn't seem to increase the fill ratio. As an experiment + I now set the default size to prime 8191. + - (interpret.c) The float range checks stupidly compared against + DBL_MIN for the low limit instead of -DBL_MAX (reported by Ben). + - (stralloc.c, debug_info) Added a few more string table statistics. + +10-Jan-2002 (Lars Duening) (3.2.9-dev.387) + - (lex.c) Added new predefined macros __FLOAT_MIN__ and __FLOAT_MAX__ + for the float value limits. + - (interpret.c) Added checks for numeric overflows to float operations. + Btw, / returned a wrong result. + - (configure.in) Reduced the default size of the RXCACHE table to 8192 + instead of 16384 entries. + +08-Jan-2002 (Lars Duening) (3.2.9-dev.386) + - (efuns.c) Efun terminal_colour() removed a crasher which happened + when too many control sequences appeared in a line (reported by Peng). + - (autoconf/configure.in) Added icc compiler option '-ipo' to highest + optimisation tests. + - (make_func.y, comm.c, lex.c, interpret.c) Removed a couple (but not all) + warnings generated by the Intel Compiler (reported by Dafire). + +03-Jan-2002 (Lars Duening) (3.2.9-dev.385) + - (gcollect.c) Forgot to clear the refcounts in the list of + destructed objects. Oops. + - (object.c) free_prog() now also frees its blueprint reference, which + should remove at least one major refcount leak. + - (lp-245/obj/master.c, lp-245/obj/player.c) Small corrections. + +02-Jan-2002 (Lars Duening) (3.2.9-dev.384) + - (simulate.c) Corrected the misformatting in 'status'. + - (simulate, comm.c) Corrected a potential crasher when bad arguments + are passed to efun input_to(): the embedded callback structure + wasn't initialized properly, so that the free_input_to() got + garbage data instead of pointers (reported by Menaures). + - (util/xerq/erq.c) Reduced the amount of crap printed in DEBUG + configuration. + - (gcollect.c) There seems to be a problem with leaking object refcounts, + so that destructed objects are tagged as 'referenced' even if they + aren't. The GC will eventually free the memory itself, but inavoidably + mess up the object statistics. As a first measure the GC after + the mark phase checks the list of destructed objects if any + of the objects on it haven't been referenced yet. If so, the + objects concerned are logged and then explicitely included into + the list of objects to free. This way at least the object statistics + will be kept in sync for the time being. + +01-Jan-2002 (Lars Duening) (3.2.9-dev.383) + - (gcollect.c, simulate, comm) The GC now removes all stale objects + referenced from the interactive structures during the cleanup phase. + As a side effect, callbacks may no longer reference destructed + objects during the clearing/counting phase of a GC. + - (actions, main.c, backend.c, efuns.c, gcollect.c, interpret.c, + simulate, dumpstat, mudlib/sys/debug_info) Destructed objects + are now kept in a separate list in order to aid mudadmins in analysing + the memory usage of their muds. debug_info(DINFO_STATUS) returns the + statistics in the new fields DID_ST_OBJECTS_NEWLY_DEST and _DEST; + debug_info(DINFO_DUMP, "destructed") dumps the lists to a file; and + the builtin commands 'status tables' and 'dumpallobj' have been + updated accordingly. + +31-Dec-2001 (Lars Duening) (3.2.9-dev.382) + - (interpret.c) to_string() can now handle operator closures (suggested + by Gnomi). + +30-Dec-2001 (Lars Duening) (3.2.9-dev.381) + - (interpret.c) abs(INT_MIN) now generates an overflow error (reported + by Menaures). + - (driver.h, mapping, smalloc) If debug macro CHECK_MAPPING_TOTAL + is defined, ever change in the registered mapping size statistics + is accompanied with a sanity check. If the check fails, a + DEBUG message is generated on stderr. + - (sprintf.c) When adding columns, a one-line column ending with a + newline inserted the newline on-the spot instead of delaying + it until the end of the line as it was done with multiline + columns (reported by Gnomi). + +29-Dec-2001 (Lars Duening) + - (driver/dumpallobj, efun/debug_info) Explained the format of + the OBJDUMP file. + - (settings/tubmud) Updated (thanks, Coogan!) + +28-Dec-2001 (Lars Duening) (3.2.9-dev.380) + - (interpret.c) When calling a simul_efun in a vanished object, the + local stackpointer of eval_instruction() was not synchronized + with inter_sp after the call (reported by Gnomi). + - (simul_efun.c) When reloading a simul_efun object, the check for + old sefuns to reactivate ignored changes in the TYPE_MOD_XVARARGS + flag. Since the exact format of the F_SIMUL_EFUN instruction depends + on this flag, this could trip the bytecode interpreter (reported by + Gnomi). + - (mudlib/astar.c) An implementation of the A* pathfinding algorithm, + donated by Acius (thanks!). + +21-Dec-2001 (Lars Duening) (3.2.9-dev.379) + - (simulate.c) When checking the refcounts, the extra_refs in objects + named in callbacks weren't counted corrected (reported by Tomba). + - (gcollect, call_out.c, simulate.c) Removed knowledge about the + GC internals from call_outs and callbacks. + +19-Dec-2001 (Lars Duening) (3.2.9-dev.378) + - (interpret.c) Corrected a wrong variable initialisation in + efun say() (reported by Nostradamus). + +14-Dec-2001 (Lars Duening) + - (interpret.c) Efun set_this_object() queried the master and + simul-efun object without checking if they actually exist. + +12-Dec-2001 (Lars Duening) (3.2.9-dev.377) + - (call_out.c) Efun call_out_info() did not return the target object + if the call_out is a closure (reported by Menaures). + - (interpret.c) The increment and decrement operators were missing the + overflow checks (reported by Freaky). + - (lex.c) New LPC defines __INT_MAX__ and __INT_MIN__ for the numeric + integer limits. + - (interpret.c) Another overflow check, this time for __INT_MIN__ / -1 + (reported by Menaures). + - (interpret.c) Corrected the bugfix to the say() refcount problem + (thanks, Tomba!) + +11-Dec-2001 (Lars Duening) + - (comm.c) TELOPT_TM can now be negotiated from the mudlib as well + (reported by Peng). + +11-Dec-2001 (Lars Duening) (3.2.9-dev.376) + - (interpret.c) Additions, subtractions and multiplications now + check for numeric overflows. + +11-Dec-2001 (Lars Duening) (3.2.9-dev.375) + - (interpret.c, mapping.c) Oops, the new checks also introduced + divisions by 0 (reported by Menaures). + - (sprintf.c) Runtime fieldsize specification by '%*' didn't check + if the size was given as MIN_INT: it would try to negate it + to get the positive number, but fail and cause the formatting + routines to crash under circumstances (reported by Menaures). + +10-Dec-2001 (Lars Duening) (3.2.9-dev.374) + - (interpret.c) gcc 2.91 on Linux/x86 generates buggy code for + MIN_INT % -1, so this case is now explicitely check for + (reported by Menaures). + - (interpret.c) Multiplication of a string with a number was + not checked for numeric overflows in the computation of + the result length (reported by Menaures). + - (smalloc.c) Added a check against numeric overflows in the + computation of the final memory block size. + - (mapping.c) When allocating/resizing mappings, a check against + numeric overflows in the size computations has been added + (reported Menaures). + - 3.2.9-dev.373 had an extraneous debug statement. + +05-Dec-2001 (Lars Duening) (3.2.9-dev.372) + - (backend.c) Before calling reset() or clean_up() from the backend, + the previous_object is cleared (reported by Gnomi). + - (main.c) New commandline option: + --random-seed + Seed value for the random number generator. If not given, the + driver chooses a seed value on its own. + This option is for debugging. + - (interpret.c) The mysterious code in calling alien lfun closures to + create a second control frame, deactivated in dev.318, revealed + its purpose: when for such a closure the bound object l->ob + differs from the code object l->function.alien.ob, this fact + needs to be recorded in order to prevent security holes. So the + code fragment has been activated again with a small change: the + second control frame will be created only if the two objects + differ (unknowingly suggested by Menaures). + +04-Dec-2001 (Lars Duening) (3.2.9-dev.371) + - (interpret.c) When doing a call_other on an array, inter_sp + was incorrect while getting the object. An error there + then could clobber memory. + - (backend) Added in internal flag 'mud_is_up' for debugging. + - (main.c) The initial random seed is printed for debugging + purposes. + +28-Nov-2001 (Lars Duening) (3.2.9-dev.370) + - (interpret.c) In-place execution of invert_bits() returned an + invalid svalue. + - (prolang.y) Another correction to the bugfix of Gimli's problem + (reported by Freaky). + - (lex.c) Line number counting was thrown off by one by the + auto-include string (reported by Menaures and Nathan). + +27-Nov-2001 (Lars Duening) (3.2.9-dev.369) + - (prolang.y) The bugfix to Gimlis problem unfortunately broke a couple + of muds. This version works better (reported by many people). + - (array.c) Removed a memory leak in inherit_list()s error handling. + +25-Nov-2001 (Lars Duening) (3.2.9-dev.368) + - (mudlib/sys/functionlist.h) Changed the <> include of lpctypes.h + into a "" include (suggested by Heiko). + - (prolang.y) Inheriting two private functions of the same caused the + compiler to crossdefine the second one to the first. Not directly + visible to the user, this messed up any use of these functions + by INITIALIZATION_BY___INIT (reported by Gimli). + - (interpret.c) Efun replace_program() can omit the argument if the + object has only one inherit (suggested by Pulami). + +23-Nov-2001 (Lars Duening) (3.2.9-dev.367) + - (object.c) Efun say() could leak object references (reported by Tomba). + - (mudlib/sys/functionlist.h) Changed the absolute include of lpctypes.h + into a <> include (suggested by Heiko). + +21-Nov-2001 (Lars Duening) + - (pkg-mysql.c) Using the mysql->thread_id as handle proved to be + unreliable as the thread_id may change. Instead an explicit + handle is now used (thanks, Fuchur!). + - (ed.c) Added command 'T' to perform Tab <-> Whitespace conversion + (thanks, Menaures!). + +20-Nov-2001 (Lars Duening) (3.2.9-dev.366) + - (sprintf.c) Printing a table modified the internal precision information + without making a backup. If now the table was applied to an array + of data ("%#99999999999@s" format string), formatting the second + line would cause a crash (reported by Menaures). + - (doc/efun/snoop) Corrected the manpage: snooping an already snooped + player terminates the previous snoop (reported by Zordiac). + +19-Nov-2001 (Lars Duening) (3.2.9-dev.365) + - (sprintf.c) It was possible to instruct sprintf to format a string + as both columns and as a table. sprintf() then formatted it as + columns, but any error (like buffer overflow) would crash the + driver. The error recovery is now more robust, and such an invalid + format string is rejected (reported by Menaures). + - (sprintf.c) Max size of the result is now 128 KByte. + - (lex.c) A H_AUTO_INCLUDE closure also receives a flag telling if + it was a <>-type include or not (suggested by Freaky). + - (interpret.c) Efuns and_bits(), or_bits(), xor_bits() mishandled + the bits 5, 11, 17, ... (thanks, Fuchur!) + - (prolang.y) The bugfix yesterday was not quite correct: a pair + of missing parentheses completely changed the meaning of the + check for private inherited functions, causing the driver to crash + (reported by Freaky). + +18-Nov-2001 (Lars Duening) (3.2.9-dev.364) + - (array.c) Efun inherit_list: the tagging of virtual inherits + returned a random value for the main program (reported by Freaky). + - (prolang.y) Inherited private functions could hide simul-efuns + or efuns (reported by Gnomi). + - (lex.c) If H_AUTO_INCLUDE is set to a closure, it will be called + for all files opened by the lexer. A second argument passed to + the closure determines whether the call is for the object file + itself or for an included file (suggested by Freaky). + - (func_spec, array, exec.h, prolang.y) New efun include_list() + to return the filenames read when compiling a program. + - (efuns.c) Added the number of included files to the result + of object_info(OINFO_MEMORY). + +17-Nov-2001 (Lars Duening) (3.2.9-dev.363) + - (comm.c) Oops, two bugs found. + +17-Nov-2001 (Lars Duening) (3.2.9-dev.362) + - (comm) Efun input_to() now accepts a prompt parameter, specifying + the prompt to print. + - (array.c, exec.h, mudlib/sys/inherit_list.h) New flag for efun + inherit_list() allows to tag virtual inherits in the result + (rest of f-991020-0). + - (doc/concepts/hooks) Corrected the docs for the MODIFY_COMMAND hooks. + +17-Nov-2001 (Lars Duening) (3.2.9-dev.361) + - (func_spec, prolang.y, make_func, lex, simulate) Replaced the efun + set_auto_include_string() with the driver hook H_AUTO_INCLUDE. + Additionally, a closure can be used to generate the auto include + data (f-000505, f-011026-2, f-990316-1). + - (simulate.c) Removed a small memory leak in set_driver_hook(): + replacing hooks leaked the old hook data. + +16-Nov-2001 (Lars Duening) (3.2.9-dev.360) + - (sys/debug_info.h, smalloc.c) Efun debug_info(): macro DID_SBRK_SIZE was + typoed as DID_SBKR_SIZE. + - (sys/debug_info.h, smalloc.c) Efun debug_info(): added the derived + statistics DID_MEM_ALLOCATED, _USED and _TOTAL_UNUSED to the + DINFO_DATA:DID_MEMORY data. + - (interpret.c) The stack overflow error handling forgot to update + the stack pointer after cleaning up the stack, causing some + svalues to be freed twice (reported by Coogan). + - (efuns.c) Efun terminal_colour(): Temporary values are no longer + held directly on the stack, but instead in an array on the stack, + thus greatly reducing the stack usage for strings with lots of + colour codes. + +15-Nov-2001 (Lars Duening) (3.2.9-dev.359) + - (lex.c) If H_INCLUDE_DIRS is set to an array of directory names, + the names can now have leading '/' (reported by Nathan). + - (mapping.c) check_map_for_destr() didn't check if the mapping + actually had a condensed part - this can happen when called + from compact_mappings() (reported by Freaky). + - (interpret.c) Improved the stack overflow checking a bit, and for + some function calls the local variables were allocated twice. + - (interpret.c) member() and member_array() used with closures + didn't always find them (reported by Gnomi). + +14-Nov-2001 (Lars Duening) (3.2.9-dev.358) + - (gcollect.c) Tweaks to the information dumped on fatals. + - (driver.h, gcollect) New debug macro DUMP_GC_REFS (in driver.h) + instructs the GC to list all found references on the gcollect_outfd. + Off by default, this macro should be defined only by people + getting fatal()s like 'First reference to destructed object, but + ref count != 0'. + - (main) New function dprintf4(). + - (mapping.c) compact_mappings() did not remove destructed objects + and closures from the mapping (reported by Menaures). + +13-Nov-2001 (Lars Duening) (3.2.9-dev.357) + - (gcollect.c, smalloc.c) Removed the compilation problem when + MALLOC_LPC_TRACE is not defined (reported by Menaures). + - (smalloc.c) The computation of a 'magic' word in the freelist + consolidation was wrong, causing bus errors in Tubmud. + - (mud/lp-245) Modified to no longer use deprecated functions + (thanks, Coogan!) + - (simulate.c) Added missing newlines to some error messages + (thanks, Freaky!) + - (efuns.c) Efun transfer() miscalculated the weights when the + target wasn't a living (reported by Zordiac). + - (driver.h) Since FinalFrontier is now running two weeks without + a problem, I deactivated the mapping check code. + - And Zordiac informed me that Deeper Trouble is now running natively + on LDMud. + +12-Nov-2001 (Lars Duening) (3.2.9-dev.356) + - (make_func.y) Lexer now understands lines terminated with CRLFs + instead of just LFs (reported by Holger). + - (gcollect.c) When a 'First ref to' with unmatching refcount + is encountered, the memory allocation information is dumped, too. + +24-Oct-2001 (Lars Duening) (3.2.9-dev.355) + - (object.c) Efun inherit_list() can now return the inheritance + structure as a tree (part of f-991020-0). + - (backend.c) If a closure is used with regreplace(), it will be + passed the position of the found substring, too (suggested + by Alfe). + - (comm.c) New efun remove_input_to() (part of f-000530). + +23-Oct-2001 (Lars Duening) + - (doc/efun/terminal_colour) Improved the explanation of the key + recognition strategy, and added a MudOS simulation function + courtesy of Fiona. + +21-Oct-2001 (Lars Duening) (3.2.9-dev.354) + - (actions.c) Removed a crasher when add_action() was performed between + two objects with no environment (thanks, Fuchur!). + +18-Oct-2001 (Lars Duening) (3.2.9-dev.353) + - (mapping.c) The search loops for condensed misc keys terminated one + iteration too late before declaring a key as not found, which + occasionally led to 'finding' a key which wasn't really there. + Especially in remove_mapping() this led to clobbered memory. + This probably fixes b-000218, b-000822 and b-000207; maybe + even some of the other strange crashers. + - (sprintf.c) Removed a crasher in justified formatting when the string + to format contained only one word (reported by Slava and Coogan). + - (doc/LPC/arrays, doc/efun/sprintf) Improved examples by + Coogan (thanks!). + +17-Oct-2001 (Lars Duening) (3.2.9-dev.352) + - (interpret.c) I had to deactivate the check against negative + range assignments - this feature is in fact in use (thanks, + Coogan and Alfe - and sorry!) + +14-Oct-2001 (Lars Duening) (3.2.9-dev.351) + - (mapping, xalloc.c) Didn't compile with sysmalloc as allocator. + +12-Oct-2001 (Lars Duening) (3.2.9-dev.350) + - (sprintf.c) Improved the flushing algorithm: spaces are more + evenly distributed, newlines in columns didn't work properly + (reported by Slava). + - (lots of files) Renamed closure_hook[] to the more sensical + driver_hook[]. + - (erq, xerq) Erq now accepts an '--execdir' argument to override + the default ERQ_DIR setting (suggested by Freaky). + - (main, comm.c) It is now possible to pass simple arguments to the + erq with the --erq commandline option (suggested by Freaky). + +11-Oct-2001 (Lars Duening) (3.2.9-dev.349) + - (sprintf.c) New formatting modifier '$' allows flush formatting + of strings and columns of strings (f-010717). + +09-Oct-2001 (Lars Duening) + - (gcollect.c) Increased the refcount of an destructed referenced + object before recursing into the substructures - I have the + feeling that there was a possible race condition, but I can't + prove it. + +08-Oct-2001 (Lars Duening) (3.2.9-dev.348) + - (prolang.y) Function definition errors and warnings now all print + the name of the function involved (suggested by Freaky). + - (simulate.c) Shadowing a nomask function now prints the names of + objects involved as well (suggested by Freaky). + +07-Oct-2001 (Lars Duening) (3.2.9-dev.347) + - (mapping.c) Darn, I introduced a bug in the diagnostic code of + the last patch. Sorry! (reported by Freaky) + +06-Oct-2001 (Lars Duening) (3.2.9-dev.346) + - (mapping) Added some more diagnostic regarding the Finalfrontier bug: + the culprit really seems to be in remove_mapping(). Now, when + the bug is detected, a trace of the activities in remove_mapping() + is printed as well. + +06-Oct-2001 (Lars Duening) (3.2.9-dev.345) + - (prolang.y) Warnings about redefinition of visibility apply + to prototype/functions only, but no longer to redefinitions + of inherited functions. + +05-Oct-2001 (Lars Duening) + - (lex.c) Termination of a macro definition in an include file + with End-of-file confused the lexer (reported by Tomi). + - (comm) If a message had to be discarded due to contention (EWOULDBLOCK), + the user will receive a information message at the next possible + opportunity. + +04-Oct-2001 (Lars Duening) + - (efuns) Renamed efun md5_encrypt() to md5(). + +03-Oct-2001 (Lars Duening) (3.2.9-dev.344) + - (prolang.y) Prototypes no longer modify the definition of inherited + functions in strange ways (reported by Fiona). + +01-Oct-2001 (Lars Duening) (3.2.9-dev.343) + - (prolang.y) The check for redefinition of 'nomask' functions no longer + worked (reported by Gimli). + +30-Sep-2001 (Lars Duening) (3.2.9-dev.342) + - (lex.c) Added a warning about empty #pragmas (reported by Slava). + - (interpret.c) Tracing no longer crashes when the command_giver + turns non-interactive (reported by Dafire). + +28-Sep-2001 (Lars Duening) (3.2.9-dev.341) + - (lex.c) Spaces before the lineend caused the lexer to complain about + an unrecognized pragma, even though the pragma had been recognized + (reported by Dafire and Slava). + - (efuns.c) Efun terminal_colour(): The escape sequence '%%^^' is + now recognized and replaced by '%^' as is '%^%^' already. This is + for compatibility with MudOS drivers (suggested by Fiona). + - (telnet.h, comm.c) Added support for mudlib negotiation of MCP, MSP + and MXP through the normal H_TELNET_NEG hook (suggested by Markus + Peter). + - (interpret.c, lex.c, smalloc.c) Made it work on Linux s/390 (a machine + where char's are by default unsigned) (provided by Freaky). + +27-Sep-2001 (Lars Duening) (3.2.9-dev.340) + - (lex.c) Pragma recognition no longer stumbles over CRs at the line + end (reported by Freaky and Slava). + - (interpret.c) The idiom of assigning to a range [i..i-1] in order to + insert elements is legal again - a lot of mudlibs already use it + (reported by Andre). + +26-Sep-2001 (Lars Duening) (3.2.9-dev.339) + - (mapping.c) Finalfrontier was caught by the diagnostic added in dev.337, + this time in remove_mapping(). I added more diagnostics there. + - (interpret.c) Assignments to negative length ranges (eg. [3..2]) are + caught and throw an error (reported by Gimli and Pulami). + - (gcollect.c) Printing memory information during a GC is more robust + against string NULL pointers (reported by Freaky). + - (lex.c) It is possible to specify multiple pragmas in one #pragma + statement, separated by commas (suggested by Largo). + +18-Sep-2001 (Lars Duening) (3.2.9-dev.338) + - (mapping.c) Somehow a syntax error managed to get into the file + after I tested it :-( (reported by Dafire and Freaky). + +17-Sep-2001 (Lars Duening) (3.2.9-dev.337) + - (mapping.c) Some more diagnostic code for the hash->condensed_deleted + suspect. Also, last_instructions() is no longer called when not + using TRACE_CODE (reported by Fiona). + +08-Sep-2001 (Lars Duening) (3.2.9-dev.336) + - (interpret.c) The test if a function call should be trace or not + was done against the command_giver, not against the + current_interactive as documented (reported by Gnomi). + - (simulate.c) When entering a fatal(), the given format string is + printed as is to stderr (just a precaution). + - (smalloc.c) The 'magic match' failed messages now give the expected + block address and sizes, too. + - (lex.c) Added warning when an unknown pragma is encountered (suggested + by Robert). + +06-Sep-2001 (Lars Duening) (3.2.9-dev.335) + - (mapping.c) Some more diagnostic code for the mapping bug: at the + moment I suspect that hash->condensed_deleted gets out of sync. + +05-Sep-2001 (Lars Duening) (3.2.9-dev.334) + - (prolang.y) The driver couldn't handle (multiple?) second-level inherits + of a 'private nomask' function, which inline closure now are (reported + by Bardioc). + +03-Sep-2001 (Lars Duening) (3.2.9-dev.333) + - (interpret.c, mapping) Some more debugging code: if an illegal mapping + size is detected, the MALLOC_TRACE information is printed. I also added + checks to certain suspicious VM instructions - I hope that I won't have + to check all mappings after each instruction. + - (xalloc, smalloc) New helper function dump_malloc_trace() to, well, dump + the malloc trace if there is one. + +31-Aug-2001 (Lars Duening) (3.2.9-dev.332) + - (efuns.c) Well, the recent change didn't fix terminal_colour(), so + I changed it back again. + - (lex.c) The lfuns implementing inline closures are now 'private nomask', + which is the real solution unlike the one implemented in 3.2.9-dev.260 + (suggested by Freaky). + - (efuns.c) If terminal_colour() was used with a closure returning a + computed string, the ever call (but the first) within the same + formatting clobbered the result from the previous one (reported by Ben + and Elric). + - (swap.c) Oops, when adjusting the allocation statistics after + swapping out variables, the driver occasionally tried to dereference + a non-existing pointer (reported by Ben and Nostradamus). + - (mudlib/sys/lpcytpes.h) The values to be returned by functionlist() were + out of sync with what functionlist() really returned (reported by + Freaky). + +30-Aug-2001 (Lars Duening) (3.2.9-dev.331) + - (mapping.c) Since the Finalfrontier mapping bug still occurs, + I added some more instrumentation to the module. + - (efuns.c) Tentative change to correct an obscure bug in the + terminal_colour() code. Let's see if it's going to work. + +29-Aug-2001 (Lars Duening) (3.2.9-dev.330) + - (smalloc.c) Corrected a small statistics problem in the + freelist consolidation: some unusable space was counted + twice (b-010713-0, b-000830). + - (swap.c) When swapping variables, the object allocation size + statistics wasn't updated. + - (lex.c) Multi-dimensional array indices in macro calls are no longer + confused with multiple macro arguments (reported by Freaky). + +28-Aug-2001 (Lars Duening) (3.2.9-dev.329) + - (interpret.c) More corrections to the refcount checking code. + Furthermore, an failure no longer crashes the driver (but + generates lots of debugging output) + (reported by Tomba). + - (pkg-mysql.c) Removed a memory leak caused by the result set + not begin freed after all the data has been fetched. + - (backend.c) Added safeguard so that slow_shut_down() is not + called repeated while a previous one is still pending (suggested by + Dafire). + +28-Aug-2001 (Lars Duening) (3.2.9-dev.328) + - (interpret.c) The reference loop check was too strict and also + flagged legal assignments (thanks, Dan). + +27-Aug-2001 (Lars Duening) (3.2.9-dev.327) + - (interpret.c) Improved the check for reference loop creation on + assignment (suggested by Menaures). + - (interpret.c) When reloading the master object, the driver freed + through the driver hooks some object references it shouldn't free + (reported by Tomba). + +26-Aug-2001 (Lars Duening) (3.2.9-dev.326) + - (simulate.c) Running the driver with '-d -d' crashed it when loading + objects. + - (interpret.c) The refcount check for got to count the blueprint + reference in programs (reported by Tomba). + - (smalloc.c) The check against MAX_MALLOCED was incomplete and + could lead to use of foreign memory (reported by Menaures). + +24-Aug-2001 (Lars Duening) + - (func_spec) Even though the efun get_type_info() was supposed to + take an arbitrary type as second argument, it wasn't declared that + way (thanks, Fiona!). + +23-Aug-2001 (Lars Duening) (3.2.9-dev.325) + - (array.c) ERQ callbacks for a destructed object don't have a + current_object at the time the error occurs. The error handling code + allocates an array, but the array code was still assuming that + current_object is always valid (b-990217-4) (reported by Fiona). + - (prolang.y) Redefining an inherited private function with a non-private + one, and then inheriting the redefinition didn't work (reported by + Menaures). + +22-Aug-2001 (Lars Duening) (3.2.9-dev.324) + - (interpret.c) The lambda protection had a bug: when a non-lambda closure + was called from within an executed lambda, the lambda closure was + accidentally freed (reported by Fiona). + - (sprintf.c) *blush* I completely forgot to add the terminator 0 after + creating the quoted representation of a string (thanks, Menaures!). + +21-Aug-2001 (Lars Duening) (3.2.9-dev.323) + - (prolang.y) The 'private' correction caused the driver to crash + under obscure circumstances. I implemented the correction now + in a different way, and it seems to work now (reported by Bardioc and + many others). + - (prolang.y) If an efun was called with too many arguments, the + extraneous args were popped twice from the argument stack, so that + subsequent function calls clobbered memory (reported by Dafire). + - (sprintf.c) For the new '%Q' format, string length is now computed + with strlen() instead of svalue_strlen() - the latter is too + sensitive towards constructed strings (reported by Menaures). + - (simulate.c) Added an error when the time left for a catch() is less + than the reserved cost. + +19-Aug-2001 (Lars Duening) (3.2.9-dev.322) + - (prolang.y) Defining a function which is also a private function in an + inherited object no longer redefines the inherited one (reported by + Bardioc and Menaures). + - (sprintf.c) Closures on inherited lfuns are printed with the defining + program for the %O format. + - (sprintf.c) New format specifier 'Q' acts like 'O', except that special + characters in strings are quoted (suggested by Menaures). + +15-Aug-2001 (Lars Duening) (3.2.9-dev.321) + - (interpret.c) Holding a reference on a lambda works much better + if the code actually increment the correct refcount. + +14-Aug-2001 (Lars Duening) (3.2.9-dev.320) + - (interpret) The VM now holds a reference on a lambda while it is + executed, preventing premature destructions (reported by Dan and + Fiona). + - (simulate, actions.c, backend.c, comm.c, gcollect.c) Since the VM + now protects lambdas during their execution, the free_closure_hooks() + hack is no longer needed. For now, the code has been just + deactivated. + - (interpret.c) Corrected late-night errors in efuns ceil() and floor() + (reported by Niels). + +13-Aug-2001 (Lars Duening) + - (mapping.c) Adding a mapping to itself via 'm += m' freed svalues first, + then used them as data for assignment (reported by Patryn). + +12-Aug-2001 (Lars Duening) + - (func_spec) Somehow the change for sizeof() didn't make it into + the distribution (reported by Menaures). + +07-Aug-2001 (Lars Duening) (3.2.9-dev.319) + - (lex.c) The recognition of numeric character constants was slightly + wrong (thanks, Fiona). + +06-Aug-2001 (Lars Duening) + - (interpret.c) Efun program_name() now accepts 0 as + argument and pass it through (suggested by Niels). + - (func_spec, interpret.c) Efuns floor() and ceil() also accept integer + argument values (suggested by Niels). + +05-Aug-2001 (Lars Duening) (3.2.9-dev.318) + - (simulate.c) Destructing an object with a single shadow crashed the + driver (reported by Craig). + - (interpret.c) Efuns load_name() and object_name() now accept 0 as + argument and pass it through (suggested by Niels). + - (interpret.c) Calling an alien-lfun created two control frames instead + of just one, with no obvious purpose. I removed one of the frames + but commenting out the code, so if it is needed nonetheless, it + will be easy to reactivate (reported by Niels). + - (interpret.c) For the first 255 simul-efuns it is now permissible to + receive references in a varargs parameter, e.g. to implement + a simulated call_other(). Handle with care! (reported by Coogan) + - (configure) Improved the search for mySQL libraries - it is amazing in + how many different ways this package is installed. + +02-Aug-2001 (Lars Duening) + - (interpret.c) Corrected a wrong function argument (reported by Freaky). + +01-Aug-2001 (Lars Duening) (3.2.9-dev.317) + - (prolang.y) The error message for the case that a wildcarded super + call tried to pass arguments was confusing (reported by Gimli). + - (interpret.c) Efun sizeof() can be used on strings (suggested by Niels). + +31-Jul-2001 (Lars Duening) (3.2.9-dev.316) + - (pkg-mysql.c) Fixed a syntax error. It sucks that I can't compile + this file at home, doesn't it? + - (lex.c) A preprocessor statement following a macro redefinition + wasn't recognized because the macro parsing code clobbered + the newline character (thanks, Fuchur!). + +26-Jul-2001 (Lars Duening) (3.2.9-dev.315) + - (lex.c) The redefinition of a macro messed up the list of defines, + eventually crashing the driver (reported by Freaky). + - (efuns.c) Using terminal_colour() with a closure as lookup method + an a non-tabled keyword crashed the driver (reported by Elric). + - (simulate.c) Clones no longer inherit the current O_WILL_CLEAN_UP + flag from their blueprint - it didn't make sense (thanks, Niels!). + +25-Jul-2001 (Lars Duening) (3.2.9-dev.314) + - (sprintf.c) Printing numbers with leading zeroes and a sign character + printed the sign in the wrong place (reported by Dafire). + - (backend.c) The check_alarm() function did not quite work right + (thanks, Coogan!). + - (backend.c) Efun regreplace(): Pattern which could match on the + empty string matched once too often at string end. + E.g. regreplace("blah fasel", ".*", "ERSATZ", 1) returned + "ERSATZERSATZ" instead of just "ERSATZ" (thanks, Fiona!). + - (typedefs.h) Upped the StrRefCount type to 'unsigned long' (b-010320). + - (lex.c) Redefinition of a macro yields a warning even if the + definition doesn't change (suggested by Gnomi). + - (backend.c, simulate.c) The initial setting of the O_WILL_CLEAN_UP flag + checked for the hardcoded "clean_up" lfun instead for what the + H_CLEAN_UP hook said. Also, the documentation was slightly out + of sync with the reality (thanks, Niels!). + - (mysql.c) db_error() used a non-existing argument (thanks, Dafire!). + +17-Jul-2001 (Lars Duening) (3.2.9-dev.313) + - (array, gcollect.c, mapping) The GC now recounts the number of arrays + and mappings in the game (reported by Niels). + - (prolang.y) If the compiler detects a function call with too many + arguments, the subsequent argument type checks were wrong + (reported by Fiona). + - (sprintf.c) Instead of using the new modifier '$', the efun now + uses the existence of an explicite pad string specification + as flag whether to remove pad space before new lines or not. + This is actually more logical to use than a modifier (suggested + by Largo). + - (actions.c) The special command 'malloc' now follows the + 'is_wizard' handling of the other special commands (thanks, + Niels). + +16-Jul-2001 (Lars Duening) (3.2.9-dev.312) + - (gcollect.c) Oops. Freeing a circular array reference with + MALLOC_LPC_TRACE enabled crashed the driver in the dump + of the array contents. + +15-Jul-2001 (Lars Duening) (3.2.9-dev.311) + - (actions, simulate) Removing or destructing a shadow now properly + removes all associated actions (reported by Nathan). + - (actions.c) New add_action() flag AA_IMM_ARGS implements the sane + NOSPACE argument handling. + +15-Jul-2001 (Lars Duening) (3.2.9-dev.310) + - (configure) When testing for mySQL, the driver automatically checks + in /usr/local/include as well (some systems don't have it the + default include path). + - (configure) Added a check for 'minimal optimization' options. + - (configure) When compiling on Windows, link in a couple of more + libraries. This might not be fully correct yet. + - (make_func.y) Removed a couple of warnings under gcc 3.0 (thanks, + Largo!). + - (comm.c) On a regular shutdown, stop the erq demon explicitely. + - (main.c) When compiling for MSDOS_FS, the erq pathname wasn't built + correctly (reported by Coogan). + - (sprintf.c) Simul-efun closures printed with %O are marked as such. + - (closure.c) Comparison of operator, efun, and simul-efun closures + was instable (reported by Nathan). + +13-Jul-2001 (Lars Duening) (3.2.9-dev.309) + - (interpret.c, comm.c, parse.c, parse_old.c) Removed a couple of + undefined behaviours, detected by gcc 3.0 (thanks, Largo!) + - (sprintf.c) Format modifier '$' instructs (s)printf() to not remove + padding white space before a lineend. + - (efuns) New efuns gmtime() and localtime() to return the time broken + up into its constituents (suggested by Markus Peter). + - (lex.c) Escaped character constants are now only parsed up to a + maximum length. If no valid digits are found, the whole item + is simply treated as escaped character (thanks, Fiona!). + +05-Jul-2001 (Lars Duening) (3.2.9-dev.308) + - (prolang.y) It is now possible again to redefine a non-static inherited + variable with a static one (or vice versa), but it also generates + a warning. + - (doc/concepts/intermud*) Intermud-2 documentation added (thanks, Fiona!) + +03-Jul-2001 (Lars Duening) (3.2.9-dev.307) + - (prolang.y) How embarrassing! The code for !INITIALIZATION_BY_INIT + had a bad syntax error - and I didn't notice it (thanks, Bardioc!) + +01-Jul-2001 (Lars Duening) (3.2.9-dev.306) + - (configure) 'with_wizlist_file=no' didn't work from settings files + (reported by Freaky). + - (configure) A superfluous 'fi' broke the configure. + - (lex.c) '//' comments didn't like to be terminated by the end of + file (reported by Matthew). + +30-Jun-2001 (Lars Duening) (3.2.9-dev.304 and dev.305) + - (hosts/os2) Updated the OS/2 port (provided by Bart). + +30-Jun-2001 (Lars Duening) (3.2.9-dev.303) + - (prolang.y) Relaxed type checking somewhat so that a non-mixed + function argument can be redefined to mixed, and vice versa + (suggested by Gnomi) + - (lex.c) Escaped character constants in inline closures weren't + recognized (reported by Freaky and Gnomi) + - (doc/LPC/comments) New. + - (configure.in) When using mySQL, also check for libnsl. + - (configure.in) The mySQL path is now used for both include + and library searches. + +29-Jun-2001 (Lars Duening) (3.2.9-dev.302) + - (prolang.y) Accidentally it was no longer possible to redefine + privately inherited variables (reported by Gnomi). + - (actions.c, simulate.c) New hook H_SEND_NOTIFY_FAIL to deliver + the notify fail message. It is meant for those muds who want + control over the command flow without having to implement everything + themselves via the H_COMMAND hook. This hook is still experimental + and may change in details (suggested by Gnomi). + - (prolang.y) It is now possible to define a default visibility + for functions and variables (see doc/LPC/modifiers) (suggested + by Freaky). + +29-Jun-2001 (Lars Duening) (3.2.9-dev.301) + - (main.c) Commandline arguments can now be read from a textfile, using + new commandline option '--args'. These argument files can be nested. + (suggested by Elric) + +28-Jun-2001 (Lars Duening) (3.2.9-dev.300) + - (configure) The evaluation of the '--with-wizlist-file' configuration + option was less than flawless. + - (main.c) Instead of scanning the arguments twice, all encountered + -f options are stored in a temporary list and evaluated when + it's time (f-010603-1). + - (main.c) Laid the groundwork for nested sources for the command + arguments. + +27-Jun-2001 (Lars Duening) (3.2.9-dev.299) + - (simulate.c) When parsing callback arguments, the pattern 'function, + object, extra' was parsed such that 'object' became part of the + 'extra' arguments (reported by Marthin). + - (lex.c) It is now possible to use symbols in inline closures, ie. + "(: 'a :)" (reported by Menaures). + - (main.c, lex.c, wiz_list, configure) The name of the WIZLIST file + can now be configured at compile time and with commandline option + '--wizlist-file'. The LPC macro __WIZLIST__ expands to the selected + name. The WIZLIST file can also be disabled completely + ('--no-wizlist-file'), in which case __WIZLIST__ is not defined + at all (based on a patch from Elric). + - (call_out.c) Corrected a fatal refcount bug in the garbage collection + of call_outs with destructed command givers (reported by Gnomi). + +22-Jun-2001 (Lars Duening) + - (sprintf.c) Column-formatting a string with one newline + printed one newline too few if the formatstring didn't end + immediately (reported by Gnomi). + +21-Jun-2001 (Lars Duening) + - (make_func.y, lex.c) Identifier names can use the extended alpha + characters from the ISO 8859-1 alphabet (suggested by Elric). + +17-Jun-2001 (Lars Duening) (3.2.9-dev.298) + - (backend.c) cleanup_stuff() also executes a clear_state() to + avoid dangling object references (reported by Gnomi). + - (pkg-mysql.c) Added efun db_error() to return the most recent + error string (thanks to Casey and Dafire). + - (efuns.c) If the driver is compiled with DYNAMIC_COSTS, the cost + of efun clones() is proportional to the number of objects + in the game. + +13-Jun-2001 (Lars Duening) (3.2.9-dev.297) + - (prolang.y) Global variables can no longer be redefined (reported + by Coogan). + - (doc/efun/operators) Clarified the behaviour of () casts. + - (simulate.c, interpret.c) Normal runtime errors (and their traceback) + are no longer reported on stdout at all (reported by Tomi). + - (etc/startmud.pl) Added a simple start/keep-alive script - feel + free to improve on it (thanks, Krystal-Anne!) + +11-Jun-2001 (Lars Duening) (3.2.9-dev.296) + - (interpret) Nifty little crasher: if the object holding the closure + currently execute is destructed, the interpreter happily tried + to free the closure after execution without noticing + that it already has been freed (as part of the object destruction + process) (reported by Freaky). + +09-Jun-2001 (Lars Duening) (3.2.9-dev.295) + - (main.c) Improved the formatting of the language options in the + '--options' output. + +07-Jun-2001 (Lars Duening) + - (comm.c) The driver forgot that it is in noecho/charmode mode after + the second consecutive input_to call, sending out unnecessary + telnet negotiations. + - (interpret.c) When an object is destructed, all references to it + are removed from the stack - including references through + closures. Before, only direct T_OBJECT references were removed + (reported by Gnomi). + +04-Jun-2001 (Lars Duening) (3.2.9-dev.294) + - (prolang.y) The type on function return is too strict (or the + type tracking in general too lacking) unfortunately, + so I took it out again. + +03-Jun-2001 (Lars Duening) (3.2.9-dev.293) + - (prolang.y) A cast of a type to itself is now a no-op as it should + be (reported by Gnomi). + - (interpret.c, prolang.y) Integers and float can now be compared + against each other (suggested by Gnomi). + - (gcollect.c) The GC forgot to trace the program->blueprint pointer + which was introduced dev.278 (reported by Coogan). + +02-Jun-2001 (Lars Duening) + - (backend.c) The check_alarm() function also restores the alarm + signal handler. + - (prolang.y) It is now possible to cast to '(mixed)'. + - (prolang.y) Improved the type tracking of '?:': it now accepts + operands of different types and evaluates to 'mixed' in that + case (reported by Dennis VanHoey) + - (prolang.y) Improved the type checking at function return under + strict_types. + +25-May-2001 (Lars Duening) + - (configure) Comments may now appear at the end of the lines in + a settings file (thanks, Bertram!). + +24-May-2001 (Lars Duening) (3.2.9-dev.292) + - (efuns) Efun terminal_colour() can now use closures to translate + colour keys (suggested by Elric). + - (backend.c) Removing destructed objects in the process-objects + loop clobbered the list of programs to replace (reported by + Gnomi). + +22-May-2001 (Lars Duening) + - (backend.c) Efun regreplace() can now take a closure to produce + a replacement string (suggested by Fiona) (f-010516-2). + +16-May-2001 (Lars Duening) (3.2.9-dev.291) + - (backend.c) The call to clean_up() erroreously counted the internal + blueprint-program reference to the reference count passed to the + clean_up() apply. Additionally, before the call all pending + destructed objects are removed (suggested by Elric). + - (rxcache.c) The regexp cache forgot to compare the excompat flag, + occasionally selecting the wrong regexp (thanks, Fiona). + +16-May-2001 (Lars Duening) (3.2.9-dev.290) + - (closure.c) Of course I forgot to remove one debugging related + conditional, which effectively disabled yesterdays bugfix. + +15-May-2001 (Lars Duening) (3.2.9-dev.289) + - (sscanf) Clarified the documentation regarding the matching of + '%s' (reported by Pulami and Gnomi) + - (closure.c) Compiling a simul_efun with extended varargs + in a lambda closure created faulty bytecode (reported by Gnomi). + +13-May-2001 (Lars Duening) (3.2.9-dev.288) + - (prolang.y) Undid the casting change, as it broke the idiom + 's = (string)foo->bar();' where bar() may signal a failure + by returning integer 0. It's the old 0/nil dichotomy again. + - (efuns.c) Efun sscanf(): the format '%s%d' failed to parse 'ab1cd' + correctly (reported by Pulami). + +09-May-2001 (Lars Duening) (3.2.9-dev.287) + - (prolang.y) Casting an unknown or mixed type now always inserts + a proper conversion (reported by Tomi). + - (heartbeat.c) The result for DID_ST_HBEAT_AVG_PROC was computed + as int instead of float (reported by Freaky). + - (mud/morgengrauen) Added basic support for the MorgenGrauen 3.2.6 + mudlib. + +08-May-2001 (Lars Duening) + - (prolang.y) The expression 'a & b' failed to track the types if one + of the operands was of TYPE_ANY (reported by Gnomi). + +06-May-2001 (Lars Duening) + - (interpret.c) Added a protection against simple reference loops + as created by 'b = 0 || &a; b = 0 || &a;' (reported by Gnomi). + +28-Apr-2001 (Lars Duening) (3.2.9-dev.286) + - (several files) Added modifications for the Amiga/gcc port + (provided by Niels). + +27-Apr-2001 (Lars Duening) (3.2.9-dev.285) + - (sprintf.c) Duh. A typo caused '%^' to eat the next character + from the format string (reported by Robert). + - (sprintf.c) A leading '0' used to pad the whole field with 0s. + Now, only leading 0s are printed and this setting and the + explicite pad string are independent of each other (suggested + by Fiona). + - (call_out.c) Removing call_outs, or call_outs going stale, messed + up the 'number of callouts' statistics (provided by Gnomi). + +25-Apr-2001 (Lars Duening) (3.2.9-dev.284) + - (prolang.y) Pre-increment or -decrement failed to terminate + the parser reduction, causing an internal fatal error when the + result was used somewhere (reported by Dafire). + +24-Apr-2001 (Lars Duening) (3.2.9-dev.283) + - (efuns.c) Efun sgn() used on negative integers still returned +1 - + a simple typo (thanks, Fiona!). + +23-Apr-2001 (Lars Duening) + - (func_spec) Efun copy_mapping() is deprecated. + +22-Apr-2001 (Lars Duening) (3.2.9-dev.282) + - (interpret.c) When using a multi-dimensional allocate(), specifying + 0-sized dimensions could crash the driver (reported by Menaures). + - (Makefile.in) When doing 'make install', the driver is now installed + as 'driver', not 'parse' (reported by Eivind). + - (docs) Some corrections, provided by Fiona. + - (closure.c) The generation of sparse lookup ranges failed to properly + generate default-jumps for the values between two consecutive + ranges (e.g. 'case -2..-1:, case 1..2:' was smudged into 'case -2..1: + case 0..2:') (reported by Menaures). + +19-Apr-2001 (Lars Duening) (3.2.9-dev.281) + - (configure, main.c, simulate, call_out.c) Runtime for the total + number of callouts, settable with commandline option + '--max-callouts'. + +17-Apr-2001 (Lars Duening) (3.2.9-dev.280) + - (prolang.y) Redefining an inherited private heart_beat() didn't work: + the new heart_beat() wasn't called (reported by Gnomi). + - (rxcache.c) The status functions were far too slow, because they + counted the number of entries on each call (reported by Sissi). + - (prolang.y) Function calls can distinguish between variables and + functions of the same name (suggested by Gnomi). + +16-Apr-2001 (Lars Duening) (3.2.9-dev.279) + - (interpret.c) The call to privilege_violation() for efun call_out_info() + passed some random data instead of constant 0 as argument + (reported by Freaky). + +13-Apr-2001 (Lars Duening) + - (simulate.c) Made the 'illegal object to load' error message + more informative (suggested by Freaky). + +12-Apr-2001 (Lars Duening) + - (sprintf.c) The formatter "%^" will print "%^" for compatibility + with terminal_colour(). + - (closure.c, array.c) Introduced a total order on closure svalues + which allows their use in alists and array operations like + intersection. The same could be done for their use in mappings, + but that change is too big to be squeezed into 3.2.9 (reported + by Gnomi). + +11-Apr-2001 (Lars Duening) (3.2.9-dev.278) + - (prolang.y) Additions of floats to constant 0 yielded TYPE_ANY + instead of TYPE_FLOAT. + - (interpret.c) Arguments passed to runtime_error() were wrong + if the error happened in a master apply (reported by Gnomi). + +10-Apr-2001 (Lars Duening) + - (exec.h, prolang.y, simulate.c) The program structure received + a pointer pointing to the blueprint object. Main purpose is to + allow the cheap deep update of the master object, but other + uses will probably show up as well. + - (simulate.c) Added function deep_destruct() to destruct an + object and the blueprints of all inherited programs. + - (backend.c, interpret.c) The signal SIGUSR1 now destructs the + master object and all its inherits, to allow a clean reload. + +07-Apr-2001 (Lars Duening) (3.2.9-dev.277) + - (smalloc.c) The multiple-of allocation was not quite correct. + +06-Apr-2001 (Lars Duening) (3.2.9-dev.276) + - (md5.c) Removed a compiler warning. + - (smalloc.c) On Darwin, we get the memory from the system only + in multiples of 64 Bytes, which caused the creation of too-small + large blocks. Fixed that. + +05-Apr-2001 (Lars Duening) (3.2.9-dev.275) + - (actions.c) If an action doesn't have a verb defined, the error + will list the object which created the action (suggested by Gnomi). + +04-Apr-2001 (Lars Duening) (3.2.9-dev.274) + - (Makefiles) Corrected. + - (efuns, md5) New efun md5_encrypt() (thanks, Gawain!) + - (interpret.c) Assigning a volatile strings sometimes crashed due + to a faulty length computation (reported by Gnomi and Parsec!) + - (lex.c) An attempt to '(: ;} fun() {... :)' is now detected and + rejected (reported by Daniel Fischer). + +03-Apr-2001 (Lars Duening) (3.2.9-dev.272, -dev.273) + - (lex) Corrected a bug in yesterday's change. + - (doc/efun) Removed references to deprecated efuns. + - (erq, xerq) Fixed (hopefully) a type mismatch under Darwin. + - (make_func, lpc parser) Wrapped the parser into wrappers which + selectively define 'lint' to suppress spurious warnings, and + under Darwin enable compilation in the first place. + +02-Apr-2001 (Lars Duening) (3.2.9-dev.271) + - (lex) When generating names for inline closures, the compiler + makes sure that the name hasn't been used yet (reported by Dan). + +30-Mar-2001 (Lars Duening) + - (lex.c) The include path and filenames returned by the master the + and H_INCLUDE_DIRS closure can now start with leading slashes + (suggested by DaFire). + - (xerq) The incoming data buffer is cleared before each new command, + in order to detect errors more easily (suggested by Gawain). + - (comm.c) When using charmode against non-charmode clients (TinyFugue), + the line end wasn't handled properly. The solution is to receive + the data in charmode, but to pass it on to the user as if in + linemode. + +27-Mar-2001 (Lars Duening) + - (interpret.c) All = assignment operators can now operate on a + char lvalue (indexed string) on the left hand side. + +20-Mar-2001 (Lars Duening) (3.2.9-dev.270) + - (erq, xerq/execute.c) Quoted arguments are recognized and not split into + words (provided by Christian W., thanks!) + - (backend.c) The no-var-swapping time before a reset() is limited to + 5 minutes max, otherwise a lot of muds will never swap variables. + - (array.c) A correction to the correction to functionlist() (thanks, + Fiona!). + - (func_spec, interpret.c) Efun allocate() now accepts an initialisation + value (f-981229-09a). + - (configure.in) When using mySQL, the script also checks for and links + in the libz (reported by Bardioc). + +16-Mar-2001 (Lars Duening) (3.2.9-dev.269) + - (pkg-mysql.c) Dafire provided to new mySQL efuns: db_insert_id() + and db_coldefs() - thanks!. + - (array.c) The list control for functionlist() was documented + incorrectly, and also functioned incorrectly (thanks, Fiona!). + +15-Mar-2001 (Lars Duening) (3.2.9-dev.268) + - (settings/unitopia) Updated (thanks, Freaky!). + - (comm.c) The pathlength safety check in the start-erq-demon routine + was too cautious (thanks, Freaky). + - (mudlib/dhrystone.c) Added a missing assignment. + - (xerq/Makefile.in) Accidentally left the XDEBUG option enabled. + - (comm.c) A prompt closure bound to a destructed object is detected + and restored to the default prompt. An error is still thrown, to + give the mudlib hackers something to do. + - (pkg-mysql.c) The version check did not really work (thanks, Dafire!). + +14-Mar-2001 (Lars Duening) (3.2.9-dev.267) + - (main.c, comm.c) The command option '--erq' can now be used to + specify the full pathname of the erq executable (suggested + by Freaky). + - (comm.c) Before printing a prompt via a closure, the current object + is set to the command giver. This avoids a crash under (admittedly + rare) circumstances of closure destruction. + +13-Mar-2001 (Lars Duening) (3.2.9-dev.266) + - (dumpstat.c, gcollect.c) Added uses of StrRefCount where I forgot + them earlier (thanks, Freaky!) + - (backend.c) When calling the master apply slow_shut_down(), it is + made sure that previous_object(), this_player(), and + this_interactive() are all 0 (reported by Freaky). + - (comm.c, ed.c, interpret.c, simulate.c) Removed spurious checks + for out-of-memory condition. While the intention is noble, it hasn't + been implemented consequently enough to be of any use. + - (comm.c) If a CRLF as expansion of a NL character was to be inserted, + but only one character was left in the buffer, the code errorneously + detected a 'message shorter than minimum, needs not be send' + condition, thus swallowing all following characters after the NL. + - (interpret.c) Argl. Letting the ==/!= comparison for floats fall through + to the all new and improved closure comparison was not a good idea + (reported by Gnomi and Freaky). + +12-Mar-2001 (Lars Duening) (3.2.9-dev.265) + - (pkg-mysql.c) db_connect() optionally takes a username and a password + (thanks, Andre!) + +09-Mar-2001 (Lars Duening) (3.2.9-dev.264) + - (mud/lp-245) Small corrections. + - (configure) Another define for 'void' signal return types - this one + can be tested directly, as a comparison of the values of RETSIGTYPE + is not portable. + +05-Mar-2001 (Lars Duening) (3.2.9-dev.263) + - (smalloc.c) Corrected a statistics error (reported by Freaky). + - (simulate, interpret, efuns.c) Added the last error trace as + possible return from debug_info(DINFO_TRACE) (suggested by Gnomi). + +04-Mar-2001 (Lars Duening) (3.2.9-dev.262) + - (interpret.c) Removed a VM stack leak in ++/-- on floats (reported + by Dafire). + - (object.c) The previous object for object resets is this_object() + (reported by Gnomi). + - (Makefiles) Added 'lint' to the compiler defines to ensure a smooth + compilation of prolang.y. + +28-Feb-2001 (Lars Duening) (3.2.9-dev.261) + - (backend.c) Simplified the error message output in write_file(). + - (simulate.c) The master apply runtime_error() receives an extra + argument describing if the error is a normal error, or occured + during a heartbeat (suggested by Freaky). + - (func_spec) Efuns add_verb() and add_xverb() are now part of the + deprecated bunch. + - (gcollect.c) Added a dump function for closure literals. + +27-Feb-2001 (Lars Duening) + - (lex.c, gcollect.c) Cosmetics. + - (smalloc.c, main.c) xfree() now accepts NULL pointers. Allocation of + MIN_(SMALL_)MALLOCED blocks actually check if the memory is + allocated (reported by Freaky). + - (main.c, backend.c, interpret.c) Swapping is no longer an optional + feature, though it still can be disabled by specifying swapping + times of 0. + - (configure.in, main.c, xalloc) New commandline options '--min-malloced' + and '--min-small-malloced' to complement the configuration options + (suggested by Freaky). + - (hosts/win32) Updated the various files with those provided by + Coogan (thanks!) + +26-Feb-2001 (Lars Duening) + - (smalloc) Renamed the constant MASK to M_MASK, as MASK seems to clash + with one of Darwin's symbols. + - (smalloc.h) svalue_strlen() did not use StrRefCount in all the places + it should be used (reported by Freaky). + +22-Feb-2001 (Lars Duening) (3.2.9-dev.260) + - (func_spec, efuns) The efuns debug_info() and object_info() can now + return single values instead of whole arrays. + - (backend, comm.c) Added a check method which restarts the alarm + after some time of activity. This is required at least for + Cygwin on Windows, where the alarm often gets lost (thanks, Holger!). + - (interpret.c) The master apply valid_trace() now receives as second + argument the argument passed to the efun (suggested by Coogan). + - (typedefs.h, interpret.c, gcollect.c, stralloc, smalloc.h) Introduced the + type StrRefCount for the shared string refcounts. This will make it + easier to switch from 16-Bit to 32-Bit refcounts (after 3.2.9 + has been released, since it should undergo some more testing) + (p-010208). + - (lex.c, prolang) Inline closure 'inherit' the visibility modifiers + of their defining function (suggested by Coogan). + - (smalloc.c) Corrected an accounting error in consolidate_freelists(). + +21-Feb-2001 (Lars Duening) (3.2.9-dev.259) + - (autoconf/configure.in) Some more small fixes. + - (prolang.y) Recognize an inherited heart_beat() only if it is visible + (adopted from Morgengrauen). + - (efuns.c) debug_info(DINFO_DATA, DID_STATUS) now returns the number + of executed heartbeats as well as the total number of heartbeats. + - (settings/morgengrauen) New configuration file. + +20-Feb-2001 (Lars Duening) (3.2.9-dev.258) + - (autoconf/configure.in) Corrected some replacement directives. + - (func_spec) Removed two duplicate efun definitions which caused + Cygwin compiles to hang. + - (make_func.y, lex.c) Added diagnostics to detect duplicate efun + and string definitions. + - (autoconf/configure.in) The option --enable-use-mysql now also + accepts a directory path under which the libmysqlclient can be + found (f-000918). + +16-Feb-2001 (Lars Duening) (3.2.9-dev.256 and -dev.257) + - (main.c) Added code to unblock SIGALRM on program start - on systems + it is blocked randomly for no obvious reason (thanks, Fini!) + (maybe fixes b-000308) + - (efuns, func_spec) New efun sgn() to retrieve the sign of a numeric + argument (suggested by Croft). + +13-Feb-2001 (Lars Duening) + - (lots of files) New configuration option 'use-deprecated' allows + to disable obsolete and deprecated efuns. If enabled, the macro + __DEPRECATED__ is defined (suggested by Coogan). + - (lots of files) The UDP port is now a standard feature. The + option has been renamed from 'catch_udp_port' to just 'udp_port'. + - (lots of files) The UDP efuns have been renamed from send_imp() + and query_imp_port() to send_udp() and query_udp_port(); as were + the associated privilege violation string and the master apply. + The old names are still available with USE_DEPRECATED. + +12-Feb-2001 (Lars Duening) + - (interpret.c) Assigning volatile strings was somehow no longer + supported under all circumstances (reported by Gnomi). + +07-Feb-2001 (Lars Duening) (3.2.9-dev.255) + - (smalloc.c) Removed a compilation error (reported by Coogan). + +06-Feb-2001 (Lars Duening) + - (strfuns.c) When (re)allocating the strbuf buffer, the length was + accidentally casted down to unsigned short, causing the program + to write outside the allocated memory (reported by Sebastian). + +05-Feb-2001 (Lars Duening) + - (smalloc.c) Using the time_stamp() from within the allocation routines + was really stupid. + - (smalloc.c) The large block allocator had an off-by-one error which + left free large blocks of 'small' size behind. These blocks could + never be allocated, just merged again. + - (smalloc.c) The routine to split largish free small blocks was faulty, + causing coredumps. + - (parse_old.c) Expanded the list of hard coded prepositions. + - (lex.c) Added new standard predefine __LDMUD__, expanding to an empty + string. + - (settings/heaven7, mud/heaven7/) Added basic support for Heaven7: you can + boot the mud and log in. There are probably still errors in the + areas. + +31-Jan-2001 (Lars Duening) + - (interpret.c) Attempts to set a single string character to 0 + are now caught with a runtime error (reported by Nico). + - (func_spec) The result of set_prompt() can be a string or a closure, + yet it was declared to return only string (reported by Gnomi). + - (prolang.y) The type tracking for multiplication returned an 'int' + result even for 'mixed' operands (reported by Gnomi). + - (interpret.c) The relations '==' and '!=' can now compare lfun- + and variable closures (suggested by Gnomi). + - (func_spec, efuns) New efuns min() and max(). + +30-Jan-2001 (Lars Duening) + - (configuration, smalloc.c) Added a new config parameter + MIN_SMALL_MALLOCED which defines the size of the first small chunk + allocated by the system. + - (xerq) With ERQ_FORK started subprocesses are now as well handled + with a child_t structure. While not exactly necessary, it allows + for useful diagnostics in the sig_child() handler (reported by + Freaky). + - (dumpstat, efuns.c) The internal data measuring routines now return + both the total data size, as well as the data size scaled down + according to the extend of data sharing. The results are also + returned by object_info(OI_MEMORY) (suggested by Freaky). + +26-Jan-2001 (Lars Duening) (3.2.9-dev.254) + - (smalloc.c) Introduced a free list for 'oversized' small blocks which + is used much like the unused space in a small chunk. This list + allows the consolidation function to keep large free blocks + together even if they exceed the legal maximum size for small + blocks. + +25-Jan-2001 (Lars Duening) + - (smalloc, gcollect.c) New function consolidate_freelists() to + rebuild the small block free lists, merging adjacent free small + blocks where possible. Additionally, when a small chunk is exhausted + the small block allocator first tries to split one of the larger + free blocks before getting a new small chunk. + +25-Jan-2001 (Lars Duening) (3.2.9-dev.253) + - (xerq/execute.c) Corrected some small bugs (thanks, Freaky!) + +24-Jan-2001 (Lars Duening) + - (port.c) The time_stamp routines recompute the string result only + if the time has changed since the last call. + - (efuns.c, smalloc.c) smalloc now keeps a statistic about the number + and size of permanent and clib allocations; and debug_info() + returns this statistics as part of (DINFO_DATA, DID_MEMORY). + - (smalloc.c) Defining the macro DEBUG_SMALLOC_ALLOCS causes smalloc + to log all new allocations which can't be satisfied directly + from the free lists. The output is written to the same stream + as the GC log (default is stderr). + +19-Jan-2001 (Lars Duening) (3.2.9-dev.252) + - (main.c) Change to the default MUD_LIB directory early, so that the + debug.log file is opened in the right place (reported by Elric). + - (xerq) The parent now synchronizes with the child by sending a specific + byte of data. + - (pkg-mysql.c) Markus Peter provided a patch for backwards compatibility + with mySQL before 3.22.24. + - (main, comm.c) The name of the erq executable can now be given on the + commandline with the option '--erq ' (suggested by Freaky). + +18-Jan-2001 (Lars Duening) + - (comm.c) In efun exec(), if this_interactive() points to one of the + the involved objects, it is switched over as well, like this_player() + already is (reported by Elric). + - (xerq) Freaky found and corrected a couple race conditions in the + clean-up loops of socket and children. + - (backend.c) Efun debug_message() now allows to preprend the message + with a timestamp for the current date and time, controlled by + a new bitflag (suggested by Freaky). + +17-Jan-2001 (Lars Duening) + - (xerq) Added additional diagnostic output, activated with compiler + option XDEBUG. Also, removed two uninitialized variables (the stdout/ + stderr sockets in the child_t structure) in the handling of child + processes, and added measures against buffer overflows. + +16-Jan-2001 (Lars Duening) + - (erq.c, xerq/socket.c) When closing the connection to a child + process, the erq makes sure to read all still remaining data + from the connection (reported by Freaky). + +21-Dec-2000 (Lars Duening) (3.2.9-dev.251) + - (comm.c) If the driver received only a NL in charmode, the first + following character was ignored. + +21-Dec-2000 (Gnomi) + - (comm.c) Found and corrected a problem concerning the use + of CHARMODE with Windows' telnet: the charmode negotiation were + considere a failure too early, and moreover the CHARMODE_REQ flag was + reset without adjusting the input buffer variables. Unfortunately + this re-opens b-000818. (b-001214) + - (comm.c) Clients sending CRLF in Charmode instead of just CR + are now handled properly: the LF is ignored like the NUL in CR NUL + already is. This also re-fixes b-000818. + - (comm.c) When receiving DONT ECHO or WONT SGA, the check for if + the option has already been granted was wrong. + - (comm.c) After a charmode input_to() has been received, the driver + did not properly reset the text pointers, causing !-escaped + commands to go unrecognized. + +20-Dec-2000 (Lars Duening) (3.2.9-dev.250) + - (comm.c, interpret.c) More small corrections to the new telnet + error reporting. + - (func_spec, backend.c) Extended the efun debug_message() to take + a parameter telling where to log the message (suggested by Freaky). + +19-Dec-2000 (Lars Duening) (3.2.9-dev.249) + - (mudlib/floattest.c) Unfortunately this code was a derivate of + a copyrighted program from Numerical Recipes, and therefore can't be + distributed legally. + - (lex.c) On solaris, strtod() does not clear errno after a successful + conversion, causion spurious warnings (reported by Coogan). + - (main.c) The driver version is now also printed in the .debug.log + file on startup. + - (comm.c) A bug in the comm_fatal() routine caused the driver to + abort on the second call to it. Oops. (reported by Gnomi and + Freaky) + +15-Dec-2000 (Lars Duening) (3.2.9-dev.248) + - (comm, simulate.c) When the telnet machine for a player gets into + an inconsistent state, the driver no longer aborts. Instead, the + player's interactive structure is dumped to stderr, and then + removed the hard way. + - (regexp.c) Added the metacharacter '+' (match at least once' + to the regexp code (provided by Terry Penn, thanks!). + - (mudlib/floattest) This LPC program computes the floating point + characteristics; it can be called from the test_master (provided + by Croft, thanks!) + +14-Dec-2000 (Lars Duening) (3.2.9-dev.247) + - (lex.c) Octal numbers are now prefixed by '0o' - it's cleaner + and avoids compatibility problems with existing code. + +12-Dec-2000 (Lars Duening) (3.2.9-dev.246) + - (interpret.c) Omitting a check_map_for_destr() in a mapping addition + caused data in a wiz_info mapping to mysteriously disappear (thanks, + Coogan) (b-001204). + +10-Dec-2000 (Lars Duening) (3.2.9-dev.245) + - (prolang.y) The result type for '++map[mixed]' was computed + incorrectly (reported by Freaky). + - (comm.c) If an error occurs on accept(), the driver no longer abort()s + but prints a better error message. + +06-Dec-2000 (Lars Duening) (3.2.9-dev.244) + - (lots of files) Closures bound to destructed objects are now treated + like destructed objects and zeroed out where possible. + - (wiz_list) Destructed objects and closures is now removed from the + 'extra' wizinfo in regular intervals. Note that this doesn't + extend to subarrays and -mappings held by the 'extra' info. + +06-Dec-2000 (Lars Duening) (3.2.9-dev.243) + - (autoconf/configure.in, configure) If MySQL or IPv6 are not requested, + the configure script won't check for the libraries; consequently + they won't linked in unless needed (suggested by Coogan). + - (interpret.c, prolang.y) The operators '++' and '--' can now be + used on floats, too (suggested by Croft). + +04-Dec-2000 (Lars Duening) + - (interpret.c) sqrt(0.0) caused a 'bad argument' error - corrected + that (thanks, Andre!). + +30-Nov-2000 (Lars Duening) (3.2.9-dev.242) + - (interpret, efuns.c) debug_info(DINFO_TRACE) returns the current + call stack as either string or array. (f-000716) + +29-Nov-2000 (Lars Duening) + - (interpret.c) The efuns sin(), cos(), tan(), atan(), atan2(), + log(), exp(), sqrt() and pow(), when given an integer argument, + returned a float result typed as integer. (reported by Slava) + +28-Nov-2000 (Lars Duening) (3.2.9-dev.241) + - (lex.c) Oops, a last minute change to remove a warning broke the + recognition of escaped characters in strings (thanks, Slava!). + +27-Nov-2000 (Lars Duening) + - (interpret.c) Efun pow() did not properly check its arguments. + +27-Nov-2000 (Lars Duening) (3.2.9-dev.240) + - (lex.c) Numbers can be specified in binary using the '0b' prefix. + - (lex.c) Moved the parsing of escaped character sequences into a + separate function, and implemented the specification of characters + through their numeric code (expressed in decimal, octal, sedecimal + and binary). (f-990203-04) + +26-Nov-2000 (Lars Duening) (3.2.9-dev.239) + - (closure.c) Implemented catch-nolog as '({#'catch, , 'nolog })'. + +21-Nov-2000 (Lars Duening) + - (prolang) Folded catch() and catch_nolog() back into one catch(), + distinguished by the keyword 'nolog'. + +18-Nov-2000 (Lars Duening) + - (func_spec, interpret.c) The efuns sin(), cos(), tan(), atan(), atan2(), + log(), exp(), sqrt() and pow() now accept integers as arguments, too. + The results remain float. (suggested by Croft). + - (interpret.c, mapping.c) When testing for a 'mapping too large' condition + on mapping addition or element assignment, it is made sure that all + invalid keys have been removed. (reported by Fiona) + - (func_spec, lex.c, interpret.c, simulate, prolang.y) New language + construct catch_nolog() as alternative to catch(): the new statement + doesn't log the error in the driver logfiles (thanks, Michael!) + (p-990901). + - (lots of files) The mode of the driver (plain or compat) can now be + selected with the commandline options '--no-compat' resp. '--compat'. + The default is still selected during configuration. (f-981229-00) + +17-Nov-2000 (Lars Duening) + - (mudlib/sys, doc/) Small corrections (thanks, Coogan!). + +15-Nov-2000 (Lars Duening) + - (mudlib/telnet_neg.txt) Added Slava's example on telnet negotiation, + which includes a means of measuring lag using TMs (thanks!). + +15-Nov-2000 (Lars Duening) (3.2.9-dev.238) + - (efuns.c) The OIB_NAME returned by object_info(OINFO_BASIC) did + not start with a '/' in plain mode. (reported by Fiona) + - (mud/lp-245) Added secure/master.c as a wrapper for obj/master.c for + use with plain drivers. + - (func_spec, interpret.c, port) Added new efun utime() (provided by + Slava) and adapted ctime() to accepts its output. + - (settings/unitopia) Updated with new version provided by Freaky. + - (settings/default) Clean up. + +14-Nov-2000 (Lars Duening) + - (strfuns, actions.c, ed.c, efuns.c, interpret.c, swap.c, wiz_list.c) + New function xstrncpy() to copy a string up to a certain length, but + without adding extra 0 padding if the string is shorter than the + given length. + +07-Nov-2000 (Lars Duening) (3.2.9-dev.237) + - (efuns.c) object_info(OINFO_MEMORY) also returns the program flags + NO_SHADOW, NO_CLONE and NO_INHERIT. + - (pkg-mysql.c) Small bugfix (thanks, Michael!) + - (settings/forgottendreams) Updated according to Michael. + - (util/[x]erq/erq.h) Around dev.220 I accidentally broke + compatibility with older erq binaries by renumbering the KEEP_HANDLE + constant - fixed that now. (reported by Coogan) + +05-Nov-2000 (Lars Duening) + - (interpret.c) call_resolved() now accepts a destructed object as + second argument and returns 0 instead of throwing an error. + (reported by Coogan) + - (settings/tubmud) 'nosave' is now on by default. + +03-Nov-2000 (Lars Duening) (3.2.9-dev.236) + - (interpret.c) When setting up the frame for a function, resolve a + possible cross-definition first. (b-000616, b-001004) + - (interpret.c, prolang.y) Right shifts of 32 or more are now properly + defined. + +02-Nov-2000 (Lars Duening) (3.2.9-dev.235) + - (mapping.c) Adding two mappings of different width throws an error + (reported by Holger and Fiona). (b-001010) + +01-Nov-2000 (Lars Duening) + - (regexp.c) Added a patch by Marcus Meissner to make regexp more compatible + with 8-bit characters (thanks!). + +23-Oct-2000 (Lars Duening) + - (simulate, interpret) Moved the catch_instruction() function into + simulate to keep aggressive optimizers from over-optimizing this + function. I hope this finally cures the catch() related crashes. + (thanks, Coogan!) (b-001010-1) + +16-Oct-2000 (Lars Duening) + - (simulate, array.c, call_out.c, comm.c, mapping.c) Callbacks now accept + protected lvalues as arguments only if they are called just once. + Reason is that the protectors don't count references: at the first + return from a callback the lvalue would be freed even though it + is still needed. + (b-001002) + +12-Oct-2000 (Lars Duening) + - (main.c) New driver option '--pidfile ' to write the + pid of the driver into a file (suggested by Freaky). + +10-Oct-2000 (Lars Duening) + - (backend.c) The IGNORE_BANG option to efun input_to() didn't + work (provided by Casey, thanks!). + - (pkg-mysql.c) Changed some xalloc()s into pxalloc()s to protect them + against the GC (provided by Michael Fedrowitz, thanks!). + - (interpret.c) Cosmetics to the traceback output (thanks, Coogan). + - (simulate.c) A semicolon was missing (thanks, Christian B.). + +13-Sep-2000 (Lars Duening) (3.2.9-dev.234) + - (func_spec, lex.c, closure.c, interpret.c, prolang.y) Added the + operators '>>>' and its cousin '>>>=' for logical right shifts. + +11-Sep-2000 (Lars Duening) + - (configure) Removed no longer used option 'max-log-size' (reported + by Malcom). + +09-Sep-2000 (Lars Duening) (3.2.9-dev.233) + - (simulate.c) Callbacks in efuns like filter() can now take references, + too (reported by Freaky). + +07-Sep-2000 (Lars Duening) (3.2.9-dev.232) + - (simulate, call_out) Due to a flag inversion, call_out() was unable + to take lvalues as arguments. It also gave the error message + with an off argument count (reported by Thorsten). + +06-Sep-2000 (Lars Duening) + - (interpret) The setjmp() for a catch() instruction has been moved into + its own stack frame and eval_instruction() is called recursively + on the guarded code. This seems to prevent failures and cores + when using gcc as compiler, and doesn't hurt on other platforms + either (reported by Parsec). + +05-Sep-2000 (Lars Duening) + - (xerq/socket.c) A faulty comparison caused the xerq to ignore + SOCKET_STDERR and send everything on stdout (thanks, Fiona!). + +30-Aug-2000 (Lars Duening) (3.2.9-dev.231) + - (comm.c) The driver did not fully recover from a failed INPUT_CHARMODE + notification - treating the input as in charmode even after the + failure. (b-000818) + +29-Aug-2000 (Lars Duening) + - (interpret.c) When reactivating a destructed master, the function + applies failed to find static functions, even though all other + master applies do (thanks, Daniel!) + +28-Aug-2000 (Lars Duening) (3.2.9-dev.230) + - (pkg-mysql.c, configure, Makefile.in) Made the mySQL code work again. + Additionally the mysqlclient library is now part of the @PKGLIBS@ + template in Makefile.in, so that utils like xerq don't have to + link it in. (thanks, Michael!) + +25-Aug-2000 (Lars Duening) (3.2.9-dev.229) + - (xerq/lookup.c) In the IPv6 lookup, a buffer was freed twice. + (found by Uwe and Fiona). + - (pkg-mysql, doc/..., INSTALL) Integrated the mySQL efuns into the + driver proper. They are activated on suitable hosts with the + configuration switch 'use-mysql' and, when activated, define + the macro '__MYSQL__' in LPC programs. + - (lex.c) Added new LPC defines __VERSION_MAJOR__, ..._MINOR__, + ..._MICRO__ and ..._PATCH__ do exactly what you expect. + +24-Aug-2000 (Lars Duening) (3.2.9-dev.228) + - (INSTALL) Added compilation notes provided by Bruce (thanks!) + - (xerq/erq.c) The DEBUG part was missing the data to generate proper + error messages for RLOOKUPV6 requests (reported by Fiona). + - (comm.c) Removed two warnings. + +23-Aug-2000 (Lars Duening) (3.2.9-dev.227) + - (util/indent/, autoconf/configure.in) The Makefile is now under + configure control, and I removed a couple of warnings. + - (util/erq/erq.c) Oops, the check for HAVE_SYS_TIME came before + machine.h was included, so it couldn't work (reported by Betram + and Fiona). + +22-Aug-2000 (Lars Duening) (3.2.9-dev.226) + - (hash, stralloc) Changed a few parameters from 'char*' to 'const char*'. + - (comm.c, erq, xerq) The IPv6 lookup was totally broken - fixed it. + (reported by Holger) + +20-Aug-2000 (Lars Duening) (3.2.8-dev.225 == 3.2.8) + - RELEASE 3.2.8 + - (func_spec, prolang.y) Efun clonep() now accepts 'mixed' arguments. + (suggested by Fiona) + - (interpret.c) The salt-handling of efun crypt() is now compatible + with the md5 passwords of FreeBSDs libscrypt. (thanks, Gerhard!) + +15-Aug-2000 (Lars Duening) (3.2.8-dev.224) + - (prolang.y) All ranges '[..]' caused the compiler to overwrite + memory (most of the time the compiled program) because the attributes + of weren't promoted up by the . + - (lex.c) '//' comments in the argument list of a function macro at the + point of use were not ignored and caused syntax errors. It even was + already a 'TODO' in the lexer... (reported by Croft and Parsec). + +14-Aug-2000 (Lars Duening) (3.2.8-dev.223) + - (prolang.y) The range '[..-]' caused the compiler to overwrite + memory (most of the time the compiled program) because the attributes + of weren't promoted up by the '-' (reported by Mammi). + - (prolang.y) In the expression '++' the opcode for '++' was + overwritten if the required a 2-Byte index. (b-000803, + b-000810) + - (comm.c) Looking up hostname first enters the IP address as string + into the lookup table, to be replaced later by the ERQ. This neatly + handles unresolved hostnames as well (provided by LynX). + +11-Aug-2000 (Lars Duening) (3.2.8-dev.222) + - (mstrings) Completed the implementation of the string module itself. + +10-Aug-2000 (Lars Duening) + - (func_spec, interpret.c, efuns.c) Efun terminal_colour() can now be used + with no keyword mapping at all: it then acts as a simple wrapping + efun. + +08-Aug-2000 (Lars Duening) + - (smalloc.c) Attempts to free a memory block twice are now explicitely + flagged (when compiling with MALLOC_TRACE). + - (lex.c) #else and #endif followed by uncommented text raise an error + only in pedantic mode; otherwise just a warning is generated. + - (array.c, regexp.c, backend.c) Made the handling of a regexp's memory + more resistant to errors. Especially an error during a match or the + first pass of a regexp compilation caused the memory for the last + regexp compiled being freed unconditionally, even when that last + regexp was still in use or had been freed already. + +04-Aug-2000 (Lars Duening) + - (lex.c) After an include, the driver did not refill its lex buffer. + This had bad or even catastrophic results if the include failed + and the include statement was the last in the lex buffer. + (reported by Freaky) + - (lex.c) The preprocessor statements #else, #endif and #define now + check if they are followed by uncommented text. If yes, the + former two raise an error (like real C does), if no, the latter + one raises an error. (reported by Freaky) + +01-Aug-2000 (Lars Duening) (3.2.8-dev.221) + - (hosts/be/Makefile, .../beyacc) The driver can now be crosscompiled + on x86 for PPC. + - (mud/lp-245) Corrected a few simul_efun definitions. + - (lex.c) '#else' was not recognized if followed by whitespace. + (reported by Bardioc and Dafire) + +30-Jul-2000 (Lars Duening) (3.2.8-dev.220) + - (prolang.y) Redefinition of an inherited function with differing + arguments was not properly differentiated from a normal redefinition, + causing the redefined argument information to be lost even with + #pragma save_types in effect. (reported by Bardioc) + - (mstrings) First code for an improved string handler. + +26-Jul-2000 (Lars Duening) (3.2.8-dev.219) + - (lex.c) Preprocessor keywords weren't recognized if they were + followed by a non-space character (e.g. '# if('). (reported + by Fiona). + - (object.c) Saving a mapping to a file wrote unsaveable keys like + objects as '0' into the savefile, possibly creating multiple + entries with the same key. As restore_object() didn't expect + this, svalue were simply overwritten instead of properly freed. + This lead to memory leaks. Now, non-saveable keys and their + data are completely excluded from a saved mapping, and the + restore function is more robust. (part of: b-990429, b-991123-1, + b-000104) + +25-Jul-2000 (Lars Duening) + - (interpret.c, smalloc.c) Removed two warnings (thanks, Freaky!). + +23-Jul-2000 (Lars Duening) (3.2.8-dev.218) + - (main.c) The removal of MAX_SMALL_MALLOCED somehow didn't make + it into the diff. + +20-Jul-2000 (Lars Duening) (3.2.8-dev.217) + - (regexp.c) Errors in the regular expression leaked the memory + from temporary buffers (found by Freaky). + +18-Jul-2000 (Lars Duening) + - (smalloc.c, xalloc, main.c, settings/*, configure.in) + When the system run out of memory in a small block allocation + during a GC, it tended to crash + because the interaction of the 'force_more' allocation and the + 'max_small_malloced' parameter caused the allocator to free the + reserves, but to never check the freelists. Removing the + max_small_malloced parameter and slightly simplifying the + force_more logic solved the problem. As a side effect, the + commandline argument '--max-small-malloc' and the corresponding + configuration parameter are gone. + +17-Jul-2000 (Lars Duening) + - (closure.c, gcollect.c, dumpstat.c, interpret.c, object.c) + Revisited the places where a NULL object->variables might + be used. Especially replace_program was suspectible to this. + - (interpret.c) Efun to_string() now accepts lambda closures + as well. sprintf() was modified to print the same information + as to_string() returns. (suggested by Fiona) + +06-Jul-2000 (Lars Duening) (3.2.8-dev.216) + - (smalloc.c) Removed two warnings (thanks, Freaky!) + - (lex.c) Improved the display of the error context at line ends + or end of files. + - (configure, port, machine.h.in) Ultrix (VAX) doesn't provide + the strdup() function, so I added a check and a replacement + function. Ironically, make_func.y already has its own strdup() + for exactly this reason... (reported by Bruce). + +04-Jul-2000 (Lars Duening) (3.2.8-dev.215) + - (smalloc.c) Oops, the file didn't compile. + +03-Jul-2000 (Lars Duening) (3.2.8-dev.214) + - (comm.c) A DEBUG_TELNET statement was at the wrong place, dereferencing + an uninitialized variable (b-000620). + - (object.c) Forgot to delete the old ixopen() statement when making + the change in 3.2.8-dev.210, causing the driver to run out of + fds because every savefile was opened twice. (b-000630) + - (smalloc.c) Added more magic words to accomodate the increased + SMALL_BLOCK_MAX value. In addition, the magic word arrays are + indexed modulo their size in case SMALL_BLOCK_MAX is increased + over the size of the arrays again. + - (interpret.c) Made the VM Stack error messages more informative. + - (prolang.y) Provided by UNItopia: return type mismatches are by + default warnings, and in pedantic mode real errors. + - (Makefile.in) The generated Makefile ended the OBJ definition + on sane systems with a line ending in a backslash, which the + Ultrix make doesn't like. (thanks, Bruce!) + +01-Jul-2000 (Lars Duening) (3.2.8-dev.213) + - (main.c) DEBUG options are printed with --options, too. + - (object.c) If a savefile can't be opened, the strerror() message + is included into the error message. + - (backend.c) If the driver runs out of fds in efun write_file(), + lex_close() is called only when there is a compilation going + on (before, it was called on every out-of-fds, which crashed + the driver if it happend outside of a compile). (reported by + Freaky) + - (comm.c) h_telnet_neg() always removed two values from the + stack, regardless of many actually were there. (b-000625) + - (interpret.c) The handling of a caught error in catch() has + been exported in a separate, non-inlineable function to + thwart overzealous optimizers. (b-000606) + - (doc/LPC/closure_guide) Clarified the creation of mappings + using #'([. (b-000217-1) + - (lex.c) lex_error_context() pays more attention to the end + of the line buffer and EOF characters - before it blindly + copied 14 characters after *outp. (b-000518) + +29-Jun-2000 (Lars Duening) (3.2.8-dev.212) + - (settings/unitopia, doc/efun/count_bits) Small changes. + - (backend.c) The 'inconsistency in main loop' message is now + printed onto stdout, too. + - (main, backend.c) The state check (available when compiled with + DEBUG) can now be controlled via the commandline option + '--check-state '. + +28-Jun-2000 (Lars Duening) (3.2.8-dev.211) + - (prolang.y) Removed the shift/reduce conflict in the rules for + argument definitions: token L_VOID was ambiguous. + - (prolang.y) The argument type check stumbled over additional + arguments in a function redefinition. (reported by Bardioc) + - (interpret.c) Operator += allows to add strings and floats to ints, + as operator + already does. (reported by Croft) + +27-Jun-2000 (Lars Duening) (3.2.8-dev.210) + - (closure.c) The lambda block ({ #'return }) was compiled incorrectly: + a F_RETURN0 was generated, but for the closure compiler the block + returned void, necessiting the insertion of a default value by + the surrounding block. The result was a 'Bad stack at F_RETURN' at + the final F_RETURN[0] of the lambda closure latest, + e.g. for funcall(lambda(0, ({ #'?, 1, 1, ({ #'return }) }) )). + (reported by Mat@Maethos) + - (object.c) Under Cygwin and other MSDOS filesystem systems, the + savefiles are opened in binary mode. (thanks, Bastian!) (b-000528) + +16-Jun-2000 (Lars Duening) + - (pkg/mysql) Integrated the update to dev.207 (thanks, Malcom!) + +14-Jun-2000 (Lars Duening) (3.2.8-dev.209) + - (settings/hyperborea) added. + - (comm.c) The default routine for answering telnet negotiation requests + forgot to clean up the LPC stack when no hook was defined, thus + eventually overwriting memory. Since this happened only with + clients which actually did negotiate options, this bug remained + undetected for quite some time. (b-000508) + - (backend.c) Since b-000508 would have been found earlier if the + LPC stackpointer had been checked for consistency, I reactivated + the check_state() mechanism in DEBUG mode. + - (lex.c, prolang.y, interpret.c) Corrected the linecounting in + combination with inline closures (found by Zora). + +12-Jun-2000 (Lars Duening) (3.2.8-dev.208) + - (efuns.c) present(object) returned the environment of the object + found, not the object itself. While traditional, this behaviour + is rather illogical. (thanks, Freaky!) + - (several files) Clarified some casts. + +04-Jun-2000 (Lars Duening) (3.2.8-dev.207) + - (mapping.c) Added a fatal() if the mapping size rises over 0x10000000. + This is to track down b-000218. + +02-Jun-2000 (Lars Duening) + - (comm.c) Added a number of debug prints to debug the telnet machine. + The are inactive unless DEBUG_TELNET is defined. + +30-May-2000 (Lars Duening) + - (doc/efun/send_imp) Added a note regarding the handling of errors + on some machines. (thanks, lynX!) + - (interpret.c) The driver now prints the last 200 instructions when + fatal()ing in DEBUG mode. In addition, the trace also lists the + absolute stack usage together with the already known relative + usage. + +29-May-2000 (Lars Duening) (3.2.8-dev.206) + - (stralloc) Small improvements to the CHECK_STRING mechanism. Added + several diagnostics regarding possible refcount over/underflows. + - (stralloc) New define 'KEEP_STRINGS' prohibits shared strings + from being deallocated. While memory intensive, this is a debugging + measure to locate the 'free string not found' error. + +28-May-2000 (Lars Duening) (3.2.8-dev.205) + - (configure) Remade with autoconf 2.13 + +28-May-2000 (Lars Duening) (3.2.8-dev.204) + - (prolang.y) Warnings are generated if the redefinition of a function + loses the 'varargs' attribute (pedantic only), or if the redefinition + makes an incompatible change to the return type. Assignment type error + messages are more informative. And the argument type warnings/errors + are now printed for the correct source line, not the one following the + function. + - (ed.c) New command 'M' to strip ^Ms from lineends (thanks, Dafire!) + - (hosts/be/Makefile) The cross-compiled executable is provided with + proper resources and file attributes (icons!). + - (doc/LPC/if) Added. + +27-May-2000 (Lars Duening) + - (prolang.y) Misplaced prototypes are now a warning, not just a debug + message. + +23-May-2000 (Lars Duening) (3.2.8-dev.203) + - (comm.c, util/xerq/erq.c) Corrected a type error which caused the + erq to misinterpret message lengths, resulting in overwriting + its global variables: Due to a missing sign, the driver did not + handle a blocking write() operation properly, causing the resend of + the pending data to start off at the wrong offset. In turn, the + xerq did not protect itself against invalid message lengths. + This bug only triggered when the mud tried to sent more data + to the erq at once than the connection could handle. (Thanks, + Elric!) (b-000404) + +22-May-2000 (Lars Duening) + - (various files) Cleaned up a couple of documentary files. + +22-May-2000 (Lars Duening) (3.2.8-dev.202) + - (prolang.y) Whenever a function is redefined, the argument types + are checked for consistency. If they differ, a warning + (error in pedantic mode) is issued. The same mechanism compares + the prototype for a function with its definition. + +21-May-2000 (Lars Duening) + - (smalloc.c) Added a diagnostic to the 'Temporary out of mem' + situation, because the driver run totally out of mem before + the usual diagnostic in the allocating code is reached. + +20-May-2000 (Lars Duening) + - (interpret.c) foreach() makes sure that destructed objects are + removed from arrays. Also, assign_svalue_no_free() assigns 0 + to the destination if the source is a destructed object. + +18-May-2000 (Lars Duening) (3.2.8-dev.201) + - (lex, prolang.y) Pragma 'pedantic' causes the compiler to treat + certain warnings as errors. Pragma 'sloppy' (the default + setting) turns the pedantic behaviour off. + - (prolang.y, simulate) parse_error(), and with it the master + lfun log_error() received a flag argument 'warn', which is + set if the passed message is a warning, not an error. + +16-May-2000 (Lars Duening) (3.2.8-dev.200) + - (prolang.y) Added functions yywarn() and yywarnf() to print + warnings during the compile. They act like yyerror() except + that they don't count up parse errors. + - (prolang.y) Failure to pass enough arguments to a non-varargs + simul_efun generates a warning. I'd like to make it an error, + but then a lot of mudlibs would be unhappy. + +14-May-2000 (Lars Duening) (3.2.8-dev.199) + - (ed.c) Removed an endless loop in ed_buffer_size(). + +08-May-2000 (Lars Duening) + - (func_spec) Efun apply() was still listed with two arguments + where only one is actually required. + - (comm.c) Removed a warning. + +07-May-2000 (Lars Duening) (3.2.8-dev.198) + - (util/xerq/socket.c) In flush_queue(), the loop pointers weren't + advanced after removing a queue element. + - (doc/efun/symbol_variable) Clarified the functionality. + - (interpret.c) Efun apply(), like efun funcall(), just returns + the first argument if it is not a closure. + - (func_spec) Efun typeof() can now accepts literal references. + - (array.c) Efun transpose_array() handles mixed size subarrays + better. + - (lex.c, interpret.c, simulate.c, object.c, prolang.y) More tweaks + to the memory statistic. + - (stralloc.c) Corrected the memory statistics. + +07-May-2000 (Lars Duening) (3.2.8-dev.197) + - (smalloc.c, comm.c, simulate.c) Added a few more memory statistics. + Some memory uses are still unaccounted for, including the memory + used for mallocated strings. + +05-May-2000 (Lars Duening) + - (smalloc.c, efuns.c) Corrected the smalloc memory stat to count + and list the wasted memory fragments. Adapted the efun debug_info() + to return this information. Also safeguarded the dump_malloc_data() + function against allocations during this function (this lead to + confusing data). + - (lex, simulate.c) Added an output of the lexer structures to 'status'. + +30-Apr-2000 (Lars Duening) (3.2.8-dev.196) + - (actions.c) Corrected the cleanup code in execute_command() to + handle the situation if the command giver is destructed during + the command. (b-000207-3) + - (lex.c) By Matthew Julius: added the preprocessor macros __DIR__ + and __PATH__(). (f-990203-08) + - (main.c) Corrected a few typos in the help texts. + - (prolang.y) Corrected the type tracking when compiling the + '+' operator. + - (prolang.y) '(void)' is now accepted as empty function argument + list. + +27-Apr-2000 (Lars Duening) + - (hosts/be) Adapted the BeOS port to R5. + +21-Apr-2000 (Lars Duening) (3.2.8-dev.195) + - (prolang.y) Added the change required by bison. + +20-Apr-2000 (Lars Duening) (3.2.9-dev.194) + - (prolang.y) Local variables can now be initialized in the + definition. + - (random.c) Another small tweak. + +19-Apr-2000 (Lars Duening) (3.2.8-dev.193) + - (configure.in, configure) Oops #2, the '--with-malloc' was + applied wrongly to the config.h + - (random.c) Improved the handling of large ranges. + - (gcollect.c) Multiple references to a memblock no longer fatal() + the driver, but instead print a diagnostic. + +18-Apr-2000 (Lars Duening) (3.2.8-dev.192) + - (configure.in, configure) Oops, the '--with-malloc' was not + really applied to the config.h + - (util/xerq) Added a missing variable initialisation, and corrected + the num_fd computation for select(). (thanks, Michael!) + - (settings/forgottendreams) The name of the settings file should + be used by the file itself, hm? + +17-Apr-2000 (Lars Duening) (3.2.8-dev.191) + - (random.c) Improved the fitting of the raw random number into + the given range. The key is not to use the '%' operator, as + the low-order bits are distressingly non-random. (b-990217-3) + - (settings/unitopia) Updated. + - (settings/forgottendreams) Added. + - (smalloc.c) Increased the max size of a small block to 128 Bytes. + This value used to crash Unitopia, but probably only because + the tables weren't fully initialised. This has been corrected, + and with Unitopia's new system the crash vanished anyway. + - (array.c, backend.c, closure.c, comm.c, efuns.c, prolang.y, object.c, + ptrtable.c, simulate.c stralloc.c, strfuns.c, sprintf.c, xalloc.h) + Removed a number of warnings. (thanks, Freaky!) + - (util/(x)erq/erq.c) Correct the time_stamp() function. + - (util/xerq/socket.c) Corrected a type which clobbered the TCP + functionality. (thanks, Michael!) + - (pkg/mysql/sql.diff) Updated. (thanks, Michael!) + - (object.c) Got rid of the fragile 'old_format' variable; instead + format parse decisions use the read version value directly. + - (interpret.c) -= now works for + of any width, like the normal subtraction already does. + +16-Apr-2000 (Lars Duening) (3.2.8-dev.190) + - (lotsa files) Improved to 'out of memory' error messages to state + how much memory was needed for what. + +16-Apr-2000 (Lars Duening) (3.2.8-dev.189) + - (array.ch, interpret.c) Array sizes are listed verbatim in the + array structure. + - (smalloc.c) Small improvements to the aligned allocations. + +15-Apr-2000 (Lars Duening) (3.2.8-dev.188) + - (doc/driver/codestyle) First version. + - (xalloc.ch) New 'standardised' memory allocator module: it simply + includes the source for whatever allocator was selected. + As a side effect, the makefile no longer needs to know + which allocator to use - the define moved into config.h . + - (smalloc.ch, driver.h) Simplified the compilation of smalloc: + the functions are now compiled as they are, and stubs are + provided for the emulation of the clib functions if + possible. + - (other files) Adapted to the new memory allocator compilation, + reducing the number of dependencies on MALLOC_smalloc. + Especially: the GC support is now tied to the macro GC_SUPPORT, + SMALLOC_(LPC_)TRACE has been renamed to MALLOC_(LPC_)TRACE, + and array always store their size with the vector structure. + - (configuration) The selection of the memory allocator can now + be done with the '--with-malloc=' option of configure. + +15-Apr-2000 (Lars Duening) (3.2.8-dev.187) + - (prolang.y, exec.h) Extended the bugfix from yesterday so that + inherited functions are lookup up using a proper breadth search. + +14-Apr-2000 (Lars Duening) (3.2.8-dev.186) + - (prolang.y, exec.h) The compiler now keeps track which inherits + happened at the top level. When looking for a ::function() to + call, it searches until it either finds the function defined + in a first level inherit, or it takes the first definition + found on any other level. (b-000207-4, b-000411-1) + - (lex.c) Added new pragma 'weak_types' to counter the effects + of a pragma 'strict_types'. (b-000208-1) + +13-Apr-2000 (Lars Duening) (3.2.8-dev.185) + - (actions.c) If the notify_fail() is a closure, it is made sure + that it won't be freed while it is executing (thanks, Gnomi!) + - (erq, xerq) The time_stamp() tried to use the driver's + get_current_time() instead of the proper time(). + - (configure.in) Improved the recognition of unsupported + compiler options. + +11-Apr-2000 (Lars Duening) (3.2.8-dev.184) + - (comm.c) Corrected an endless loop in lookup_ip_entry() + (thanks, Freaky!) + - (hosts/unix.h) When compiling with gcc on Amiga, the + symbol AMIGA is made undefined. + +07-Apr-2000 (Lars Duening) (3.2.8-dev.183) + - (gcollect.c) Found another void-function casted to a value, this + time it's writed(). + - (smalloc.c) Increasing the SMALL_BLOCK_SIZE to 32 caused + crashes in UNItopia, manifesting themselves in garbage + stack data. Reduced it back to 8. + - (settings/eotl) Updated. + - (object.c) Corrected the versoin detection in restore_object() - + the logic was reversed, but happened to work for the + current generation of savefiles. (Thanks, Casey!) + +06-Apr-2000 (Lars Duening) (3.2.8-dev.182) + - (gcollect.c) Casting a the void returning function fatal() + to a value returning function caused the AIX-xlc code + generator to crash on high optimization levels. + - (lots of files) Adapted for compilation on AIX 3.4 using xlc. + Some of these changes may break the adaption previously done + by Uwe, but now at least I have a base to work from on. + +06-Apr-2000 (Lars Duening) (3.2.8-dev.181) + - (lex.c, prolang.y, main.c, settings/*, configure) + The keyword 'nosave' is now optional, controlled by the setting + parameter 'enable-lpc-nosave'. + +05-Apr-2000 (Lars Duening) + - (closure.c) Forgot to remove two leftover DEBUG printfs + (thanks, Coogan!). + - (object.c) Corrected one error message. (thanks, Casey!) + - (comm.c) Added Lynx' optimization for the iptable[] IP + address lookup. Main advantage is that it scales better + to large numbers of users. (thanks!) + +04-Apr-2000 (Lars Duening) (3.2.8-dev.180) + - (pkg/mysql) Coogan provided the updated source files - thanks! + - (INSTALL) BeOS: Added a paragraph about the etc/hosts file. + - (settings/eotl) Added the settings for End of the Line (thanks, + Casey!). + - (util/erq, util/xerq) Added timestamps plus nametag to the + diagnostics of the erq demons. + +03-Apr-2000 (Lars Duening) (3.2.8-dev.179) + - (array.c) Freaky was correct: sort_array() no longer made a copy + of the incoming array *Mateese blushes deeply*. (b-000106-3) + - (sprintf.c) Trailing pad space is not added if a newline + follows directly afterwards. + +02-Apr-2000 (Lars Duening) (3.2.8-dev.178) + - (stralloc.c) Increased the hashed length from 20 chars to 100. + - (smalloc.c) Increased the number of small block sizes from 8 + to 32, that is: the max small block size from 32 to 128 Bytes. + - (*.h) Removed the leading '_' from the include guards as these + are reserved for system defines. + - (interpret.c, prolang.y, swap.c) Removed pointer-mismatches + (for example char* vs. unsigned char*). + - (port.c) Implemented time_stamp() using strftime(). + +30-Mar-2000 (Lars Duening) (3.2.8-dev.177) + - (func_spec, prolang.y, lex.c, interpret.c, closure.c, sprintf.c) + Two new bytecodes F_NX_RANGE/F_RX_RANGE (and their lvalue + counterparts) implement the constructs [x..] and [ construct didn't + check if the sym-array is non-empty (b-000228-2). + +21-Mar-2000 (Lars Duening) (3.2.8-dev.172) + - (actions.c) When execute_command() called privilege_violation4(), + it passed sp+1 instead of sp as the stackpointer to use. This + lead inter_sp pointing to an uninitialized stack entry if the + privilege was denied, causing a fandango on the core. (b-000110-2) + - (interpret.c) set_bit(), clear_bit(), test_bit() did not check + if the given bit number might be negative. (b-000112) + +20-Mar-2000 (Lars Duening) (3.2.8-dev.171) + - (actions.c) Revisited the 64-Bit issue and removed all casts. + - (actions.c, mudlib/sys/commands.h, doc/efun/add_action) + Corrected the behaviour of add_action() so that it is backwards + compatible again. Added symbolic defines for the flags accepted + by add_action(). Improved the manpage to include examples of how + the flags affect the command parsing. (thanks, Freaky!) (b-991230) + +10-Mar-2000 (Lars Duening) (3.2.8-dev.170) + - (actions.c) Corrected a possible 64-Bit issue: a cast from (p_int) + down to (int) might have lost bits while handling an address. + - (prolang.y, lex.c) The modifier 'nosave' for variables takes + over the meaning of 'static' - the latter is still recognized + for variables, but its use is deprecated. Similar, 'nosave' + should be used instead of 'static' as inheritance + modifier. + +09-Mar-2000 (Lars Duening) (3.2.8-dev.169) + - (lex.c) Added the name of the macro to certain error messages + issued during expansion. This also required a new function + lexerrorf() with obvious purpose. + +06-Mar-2000 (Lars Duening) (3.2.8-dev.168) + - (doc/efun/closure_guide) Removed Tubmud'isms. + - (bugs/...) New bug reports, and the EotL patches. + +04-Mar-2000 (Lars Duening) (3.2.8-dev.167) + - (interpret.c, doc/efun/tell_room) Doc corrections. + - (interpret.c) f_traceprefix called master::valid_trace() with + "trace" instead of "traceprefix". + - (doc/efun/call_out) Corrections. + - (bugs/...) Added all the bug reports since .164. + +01-Mar-2000 (Lars Duening) (3.2.8-dev.166) + - (make_func.y, exec.h, backend.c, parse.c) Removed warnings. + +01-Mar-2000 (Lars Duening) (3.2.8-dev.165) + - All the prvious changes since .141 are back under PRCS control. + - (hosts/be/Makefile) The dependencies on generated files + like stdstrings.h are now generated automatically as well + (requires MkDepend 1.6). + +17-Dec-1999 (Lars Duening) (3.2.8-dev.164) + - (mapping.c) The callbacks for map(mapping) and filter(mapping) + were told about more arguments than actually existing on + the stack. Very stupid, but it took the Evermore lib to + find this one. (thanks, Bardioc!) + +16-Dec-1999 (Lars Duening) (3.2.8-dev.163) + - (simulate.c) And of course the difference between toplevel and + normal callbacks also includes the current_object :-( + - (prolang.y) Typechecking for pre-increment/decrement on indexed + values stumbled over mixed arrays. (thanks, DiEHARD). + +15-Dec-1999 (Lars Duening) + - (comm.c) Recognition of a quoted IAC in the input forgot to + change the state back to TS_DATA. + - (simulate.c) Freeing callbacks with just one arg used the wrong + pointer and crashed. (thanks, Freaky!) + - (simulate, array.c, comm.c, call_out.c, mapping.c) Argh - I + have to distinguish if a callback is called from the toplevel + (current_prog is invalid) or from a program (current_prog is + valid). (thanks, Freaky!) + +14-Dec-1999 (Lars Duening) (3.2.8-dev.162) + - (pkg/mysql) Corrected a number of crashers (thanks, Bastian!) + and added the HOWTO by Karm. + - (actions.c) The recent changes activated a bit of legacy code, + which started passing the verb as part of the argument string + to NO_SPACE commands. *sigh* (thanks, Daryth!) + - (simulate, call_out.c, comm.c) The callbacks can now accept + lvalues as arguments. + Also the index returned for faulty arguments was one too + high. (thanks, Zwirch!) + - (array.c) If setting up an efun callback generates an argument + error, the proper, lower stack pointer is returned. (thanks, + Zwirch) + - (interpret.c) apply() on efun-, sefun- and operator-closures + didn't properly check the number of arguments. This wasn't + detected earlier because the related code has hardly ever + been executed. (thanks, Zwirch!) + - (comm.c) The driver telnet negotiations understands quoted + IACs now. (thanks, Amylaar!) + +13-Dec-1999 (Lars Duening) + - (func_spec, array.c) Efun map() can now map an array through + a mapping; similar to how filter() works. + - (prolang.y) Indexing [..x] and [.. if was a lambda or bound lambda. + (thanks, Freaky!) + +05-Dec-1999 (Lars Duening) + - (interpret.c, comm.c, simulate.c, object.c) Cosmetics. + - (settings/dt2, mud/dt2/...) Created the Deeper Trouble II adaption + from the old 3.2.1@141 diffs. It compiles and seems to work, + but without the mudlib I can't tell for sure. + +03-Dec-1999 (Lars Duening) (3.2.8-dev.158) + - (interpret.c) Efun query_input_pending() deref'd the wrong object, + causing a nice crash. (thanks, Michael!) + +01-Dec-1999 (Lars Duening) + - (doc/efun/inherit_file) Corrected typos (thanks, Freaky!). + - (doc/efun/[]) Accidentally got lost in the last snapshot. + - (interpret.c) Removed a sneaky memory leak in transfer_pointer_range(). + (thanks, Michael!) + - (func_spec) Efun functionlist() was specified to return "string*" + instead of the correct "mixed*". (thanks, Freaky!) + - (interpret.c) Improved the error messages of F_MAP_INDEX. + +29-Nov-1999 (Lars Duening) + - (func_spec, comm) New efun "set_combine_charset()" to combine + characters received in charmode into strings. (f-991126-0) + - (func_spec, comm.c) Efun "set_connection_charset()" now also + accepts a string as charset specificator. + +27-Nov-1999 (Lars Duening) (3.2.8-dev.157) + - (port.h) A tentative change of VAR_PROT() and VARPROT() for AIX. + - (prolang.h, prolang.y) struct s_lrvalue is now defined twice in + prolang.y, to be able to cope with a wider variety of yaccs + (especially the AIX yacc). + - (util/xerq/(erq.c, socket.c)) Forgot to change two "struct queue_s" + to "struct equeue_s". + - (stralloc.c) string_dinfo_data() used an uninitialized variable. + +26-Nov-1999 (Lars Duening) + - (stralloc, gcollect.c, main, backend.c, Makefiles) When compiling + with DEBUG and CHECK_STRINGS: The structures of the shared + string table are shadows in a second table, and every string + access checks the consistency of the structures. Additionally, + with the commandline option "--check-strings" the whole string + table is checked with every backend cycle. + +25-Nov-1999 (Lars Duening) + The following three changes should correct b-990430, which might have + caused b-991123-0 and b-991123-1 in turn. + - (comm.c) When accepting a line of non-negotiation text in charmode, + interactive_t.tn_start became negative after the second char. + Similar if an error occured during a very long line - here + set_noecho() used wrong indices. + - (comm.c) Charmode: when a client sent single CRs and there were no + negotiations on the same line, the CR was re-read (almost) + endlessly. + - (comm.c) Should the telnet machine receive too much data, the program + now makes sure that .command_end won't fall under .tn_start resp. + .command_start. + +24-Nov-1999 (Lars Duening) + - (main.c) Commandline option "--check-refcounts" was mistakenly + marked to accept a value. + +23-Nov-1999 (Lars Duening) + - (actions.c, backend.c, call_out.c, comm.c, ed.c, gcollect.c, + interpret.c, lex.c, main.c, mapping.c, object.c, prolang.y, + simul_efun.c, simulate.c, stralloc.c, swap.c, wiz_list.c) + Added the timestamp to the diagnostics. error() and fatal() + calls automatically log the timestamp. The whole situation + of what is logged where when is still a mess :-( + - (comm.c) Ups, call_function_interactive() forgot to remove + its (stack located) error recovery context from the context + stack. And it hid the leading "!" when falling through to + IGNORE_BANG handlers. (thanks, Freaky!) + - (prolang.y, stralloc) New master-apply "inherit_file()" to check + and generated the full filename from an inherit statement. + (suggested by Freaky) (f-990323-0) + - (interpret.c) free_interpreter_temporaries() now also removes + all destructed objects from the code trace (obviously only + when compiled with TRACE_CODE). Since this function is called + only from the GC, it has no further sideeffects. + +22-Nov-1999 (Lars Duening) + - (sprintf.c) sprintf("%O", object) in plain mode prints the object + name with a leading "/". (thanks, Freaky!) + - (lex.c) Master apply include_file() now receives the object filename + in !compat with a leading slash; of the result, leading slashes + are ignored. Also removed a typo. (thanks, Freaky!) + - (simulate.c) Efun limited() did not give the closure the full + amount of eval ticks are requested in the call. (thanks, Freaky!) + - (mapping.c) Corrected the error handling in filter_mapping() and + map_mapping(), which are used for the filter()/filter_indices() + efuns and their map_() counterparts. (thanks, Robert!) + - (port) New function time_stamp() for use in the creation of + error and driver log messages. + +21-Nov-1999 (Lars Duening) + - (simulate, gcollect.c, comm, call_out.c) Introduced the "callback" + structure, to be used for input_to()s and call_out()s. call_out.c + became really simple :-) + +20-Nov-1999 (Lars Duening) + - (autoconf/configure.in, configure, port.h) Small tweaks. + - (interpret.c) Correction to sort_array(): the GET_NUM_ARG occured + too late. + +19-Nov-1999 (Lars Duening) (3.2.8-dev.156) + - (efuns.c, simulate.c, swap) Added new debug_info() request DINFO_DATA: + DID_SWAP to retrieve the data usually printed as "status swap". + - (efuns.c, smalloc) Added new debug_info() request DINFO_DATA: + DID_MEMORY to retrieve the data usually printed as "status malloc". + - (typedefs.h) Just a definition of strbuf_t was missing. + +18-Nov-1999 (Lars Duening) + - (comm.c, autoconf/configure.in, autoconf/acconfig.h, machine.h.in) + Added tests if F_SETOWN and SO_OOBINLINE are actually supported + by the operating system. + - (port.c, autoconf/configure.in, config.h.in, settings/{default,osb}) + Added the configuration option USE_SYSTEM_CRYPT. This solves + the problem for OSB that the existing password files which have + been created with IRIX' crypt() are invalid under HP-UX's crypt(). + - (efuns.c, simulate, otable, call_out, heartbeat, stralloc, rxcache) + Added new debug_info() requests DINFO_DATA, and implemented + the first sub-request DID_STATUS. + +17-Nov-1999 (Lars Duening) + - (make_func.y, lex.c, efuns.c, util/xerq) Removed a few warnings when + compiling under Solaris (some remain and are caused by the + system headers); also changed the queue_t type in xerq to equeue_t + because of a clash with the Solaris queue_t type. + - (port.h, autoconf/configure.in, autoconf/acconfig.h, machine.h.in) + Added a test for ssize_t. + - (erq.c, xerq/lookup.c) Added two fixes provided by Uwe (thanks!). + +16-Nov-1999 (Lars Duening) + - (comm.c, settings/osb) Removed a few warnings when compiling under + HP-UX; and the normal erq still doesn't compile there (but xerq + does). + - (func_spec, array, interpret.c) The efun sort_array() now accepts + extra arguments to be passed to the comparison function. + (suggested by Robert from Unholy Lands). + +15-Nov-1999 (Lars Duening) + - (strfuns.h) Changed "ulong" to "u_long", which should be the + standard. + - (mempools) Added an include of for ssize_t. + - (settings/tubmud) Corrected some settings from "=" + to the correct "with_=". (thanks, Coogan!) + - (interpret.c) When apply() expanded an array, it didn't check + the elements for destructed objects. (thanks, Coogan!) + - (interpret.c) Before calling a vefun, inter_sp and inter_pc + are updated. (thanks, Michael!) + - (lex.c) Corrected an off-by-one error in the linenumbers + of an inline closure. (thanks, Michael!) + - (array.c, efuns.c, exec.h, interpret.c, prolang.y) The various + inherit types are now distinguished by a proper "inherit_type" + field in the inherit_t structure; as opposed to the former + "is_extra" flag. (provided by Michael) + +14-Nov-1999 (Lars Duening) + - (smalloc.c) Added first hooks for use of madvise(). + - (mud/anders) Added the diffs and extra files for the patched + 3.2.1@141 driver of Deeper Trouble 2. + - (interpret.c) A return from within a foreach() crashed because + foreach's hidden "variables" messed up the stack check + in F_RETURN. (thanks, Bardioc!) + +11-Nov-1999 (Lars Duening) (3.2.8-dev.155) + - (prolang.y, interpret.c, strfuns, make_func.y) The operators "&" + and "-" (and their assignment variants "&=" and "-=") may now + be applied on strings. + - (comm.c) Arguments passed to an input_to() haven't been checked + for destructed objects. (thanks, Anders!) + - (lex.c, stralloc) News master apply include_file() to generate + the full pathnames of files specified in #include directives. + +10-Nov-1999 (Lars Duening) + - (mud/sticklib/) Updated the diff files. + +09-Nov-1999 (Lars Duening) + - (bugs/p-990901) Updated the catch_no_log() patch. (thanks, Michael!) + - (array.c) unique_array() on an empty array crashed. (thanks, Ralph!) + +08-Nov-1999 (Lars Duening) + - (simulate.c) Oops, "rename_to" has been written "rename_tp". + (thanks, Elric!) + - (gcollect.c) Added some DEBUG: printfs to check if the objects + are counted properly. + - (prolang.y) "*"::foo() now succeeds if at least one inherited + object contains this function. + - (prolang.y) The name table in get_type_name() was still incorrect. + (thanks, Michael!) + +07-Nov-1999 (Lars Duening) + - (settings/default, unitopia) Updated the unitopia settings, and + commented the max. hashtable values. + - (object.c, closure.c, parse.c, sprintf.c) Removed a couple of compiler + warnings. + - (prolang.y, closure.c, switch.h) Removed a memory leak in the + compilation of top-level switch() statements. + +05-Nov-1999 (Lars Duening) (3.2.8-dev.154) + - (regexp.c) In one place, FALSE was returned instead of TRUE, + making regexp()/regreplace() unfunctional (thanks, Zwirch!). + - (main, gcollect.c) writex() renamed to write_x() to avoid + a clash with AIX' writex(). + - (prolang) Some more AIX adaptions: struct s_lrvalue has to + be defined after the rules (to be precise: after %union), + and yyerrorf() has to use VAR_PROT() in the prototype. + - (pkg/mysql) Added new efun db_handles() (provided by Karm). + - (strfuns.h, smalloc.c) Added the necessary changes to compile + under FreeBSD (thanks, Elric!). + - (configure.in, configure) Took out the test for "-xO2" and "-xO4". + It gave wrong results under FreeBSD, and doesn't seem to be useful + anyway. + +04-Nov-1999 (Lars Duening) + - (configure) Updated it with the script created on Solaris + from the configure.in. + - (mudlib/dhrystone.c) Added Hyp's Dhrystone implementation for + test purposes (486/33MHz/Cygwin: 6.7 Dhry/s). + - (port, main.c) Cygwin's rusage() only returns 0s, so I replaced + it with the simulation also used for Amiga - this way we + at least get some time information. + - (prolang.y) "#'f == string" crashed on printing an error message + due to a lacking typename for the #'symbol. + - (closure.c) Numbers bigger than 255 in closures weren't compiled. + +03-Nov-1999 (Lars Duening) + - (doc/LPC/foreach) Improved the documentation a bit. + - (make_func.y) Since Solaris doesn't know stricmp() either, and + since on Cygwin it is just a define to strcasecmp(), I just + changed my two uses of stricmp() to strcasecmp(). + +02-Nov-1999 (Lars Duening) + - (prolang.y) Added "foreach(x in y)" as alternative to + "foreach(x : y)" - without making "in" a reserved word. + - (interpret.c) When confronted with negative starting offsets, + strstr() returned invalid results. + +01-Nov-1999 (Lars Duening) (3.2.8-dev.153) + - (efuns.c) terminal_colour() stumbled over strings starting with + a keyword. + - (closure.c) The branch-rewriting was broken in @142 - using an + invalidated variable, and rewriting only two of three branch + types weren't good ideas at all. + - (lex.c, prolang.y) Replaced the 'in' keyword in foreach() + by ':' - mudlibs already use 'in' as variable name :-( + +31-Oct-1999 (Lars Duening) + - (erq.c) Small fix in the IPv6 rlookup, provided by Uwe. + - (prolang.y) Cleaned up the lvalue rules for variables a bit, and + also removed the "dangling else" shift/reduce conflict. + - (func_spec, lex.c, prolang.y, interpret.c, closure.c) Implemented + the foreach() loop construct. (f-981229-18) + +29-Oct-1999 (Lars Duening) + - (closure.c) An include of stddef.h was missing here, too. + - (backend.c) In non-DEBUG mode, the interactive player wasn't set + in the backend loop. (thanks, Heiko!) + - (lex, prolang.y, simulate.c, exec.h) New program flag P_NO_SHADOW, + set by the new #pragma no_shadow, disables shadowing for a + program (suggested by Holger). + - (efuns.c) Efuns debug_info()/object_info(), xINFO_MEMORY: also print + resp. return the datasize of the object. (suggested by Freaky) + - (sprintf.c) Multiples of 10 were printed without the leading digit. + - (simulate.c) Efun rename(): the two valid_write() calls are now passed + the operation codes "rename_from" and "rename_to" instead of + "do_rename" twice. (suggested by Freaky) + - (interpret.c, func_spec) call_other() now accepts arrays of objects + and returns the call results in another array. + +28-Oct-1999 (Lars Duening) + - (settings/evermore) Added. + - (make_func.y) Linux doesn't know stricmp(), but strcasecmp(). Added + ad-hoc define for that. + - (swap.c) Added missing include stddef.h. + - (Makefile.in) The high WARN setting for gcc defined -Wno-parentheses + instead of -Wparentheses. + - (doc/LPC/pragma) The pragmas no_clone and no_inherit weren't + documented. + - (smalloc.h, interpret.c) Added braces around ambigouous if-elses. + - (exec.h, prolang.y, lex.c, interpret.c) Runtime errors within inline + closures were reported with wrong line numbers. Reason is that + the normal store_line_number_info() expects line numbers to + increase and therefore ignore the #line directives used with + inline closures. Solution was to add a new LI_BACK linenumber + code plus creation function to decrement the current line counter. + (thanks, Zwirch!) + +27-Oct-1999 (Lars Duening) (3.2.8-dev.152) + - (xerq/erq.c) The global variable "sockets" was not initialized. + +26-Oct-1999 (Lars Duening) + - (interpret.c) In call_lambda(): moved the checks for destructed + objects to the beginning. + - (comm.c) If after an ERQ call back the object is found to be + destructed, the callback is removed even if the ERQ sent + a KEEP_HANDLE reply. + - (regexp, rxcache, array.c, backend.c, ed) Regular expressions + used from outside ed() throw errors instead of printing + error messages. (b-990523) + - (actions, func_spec) Efuns query_notify_fail(), command_stack(): + the information, which object did the last notify_fail(), is + now stored and accessible. (f-990217-2) + - (access_check.c, lex.c, smalloc.c, wiz_list.c, hosts/amiga/dice30.diff) + Just for fun, and because most of the changes had been done already: + applied the remaining Amiga-diffs to the main sources. + +25-Oct-1999 (Lars Duening) + - (lex.c) Newlines in strings in (: :) closures are recognized + and rejected. (thanks, Zwirch!) + +24-Oct-1999 (Lars Duening) + Only two months until Christmas! + - (pkg/mysql) Added the mySQL support provided by Karm (thanks!). + +22-Oct-1999 (Lars Duening) + - (lex.c) Includes caused an offset-by-one for the linenumbers. + - (comm, gcollect.c, interpret.c) input_to()s now accept closures + for functions. (f-981229-21) + - (prolang.y) Improved the ->() operator: the function name may be + the same as a local variable, may be a string given as "ident" + or a string expression given as (). (b-991019-0, f-990510, + f-990605) + - (prolang.y, stralloc) ->() again: a call_other() simul-efun is + recognized. + - (exec.h) Removed TYPE_SPACE and TYPE_TERM - nothing used them. + +21-Oct-1999 (Lars Duening) (3.2.8-dev.151) + - (prolang.y) If an object is inherited virtually multiple times, + a wildcarded super call ("*::") calls it only once. (b-990217-0) + +20-Oct-1999 (Lars Duening) + - (prolang.y) In virtual inherits, the check for duplicate virtual + functions forgot the take the virtuality of the duplicate into + account. (part of b-981208-3) + - (prolang.y) A virtual inherit is ignored if the program in question + has been inherited virtually before. (part of b-981208-3) + - (prolang.y, interpret.c) Simulefun may now take "varargs" type + arguments (e.g. 'x (varargs mixed arg)'). (b-990113-0) + +19-Oct-1999 (Lars Duening) + Worked through a handfull of reports submitted by Rodney. + - (doc/efun/say) Clarified the exclusion rules. + - (interpret.c) Efun printf(): prints to NPCs are now sent to + catch_tell(). + - (efuns.c) Prompt-closures are protected against premature + deletion when replaced while they are executing. + - (svalue.h, interpret.c, prolang.y) New macro addref_closure() to easily + increment the refcount of a closure-svalue. + +13-Oct-1999 (Lars Duening) + - (efuns.c) Efun terminal_colour(): when, during a wrap, spaces were + removed from a string, this fact was not considered in the + memory-access sanity checks. (b-991012-1) + +12-Oct-1999 (Lars Duening) + - (comm.c) Added another IPv6 patch. (thanks, Uwe!) + - (erq, xerq) Added the ERQ_RLOOKUPV6 request supplied by Uwe (thanks!). + +07-Oct-1999 (Lars Duening) + - (comm, backend.c, gcollect.c) input_to() are now be nested when + a command is executed from within an input_to(). This is not + a real stacked input system as outlined in f-990721-0. + +06-Oct-1999 (Lars Duening) + - (swap.c) Corrected a small, but fatal omission of a cast. + +05-Oct-1999 (Lars Duening) (3.2.8-dev.150) + - (efuns.c) Straightened the key recognition in efun terminal_colour(). + - (object) Added member object_t.load_id to be able to distinguish between + objects created at the same time. + - (func_spec, efuns) New efun clones() to find the clones of an object. + (f-990203-00, f-990203-26) + +04-Oct-1999 (Lars Duening) + - (make_func.y) %tefuns specified with 'void' parameters are + now recognized as vefuns. (b-990320-0) + - (make_func.y, comm.c, ed.c, lex.c, main.c, simulate.c, swap.c) + Use of MAXPATHLEN verified. + - (prolang.y) Implemented '++[,]'. (b-990204-1) + - (func_spec, object) New efuns save_value() and restore_value() + to encode/decode values in strings. (f-981229-19) + - (func_spec, object) Extended the efuns save_object() and + restore_object() to save and restore directly to and from + a string. Maybe this should be put into separate efuns? + (f-990203-25) + +03-Oct-1999 (Lars Duening) (3.2.8-dev.149) + - (util/xerq) Commented and beautified - now that was a nice + program to work on. I left the docs/ and lpc/ files alone, + for the moment, though. + - (prolang.y) The dummy code created for undefined functions was + not aligned even with ALIGN_FUNCTIONS - the other reason + for the crash in functionlist(). (b-990819-0, see + 26-Sep-99 as well) + +02-Oct-1999 (Lars Duening) + - (doc/util/erq, util/erq) Commented and beautified the erq a bit. + There could be done more, but I really know better things + to do. But note that somebody (probably the folks at TubMud) + has added the socket requests to the erq. (b-981212) + +01-Oct-1999 (Lars Duening) + - (simulate, smalloc) Added a malloc statistic, which is dumped + into the file MALLOCSTAT with the special command "status mstat". + - (util/overhead.c) Commented. + - (util/fundesc.c, util/make_docs/) Removed - these were programs + for the original LPmud environment. + +30-Sep-1999 (Lars Duening) (3.2.8-dev.148) + - (func_spec, simulate) New efun copy_file(). + - (smalloc) Commented and beautified. + +29-Sep-1999 (Lars Duening) + - (simulate, efuns, other files) Commented and beautified simulate.c; + moved and removed several pieces of code which didn't belong + there. + - (prolang.y) The compiler thought, "int * string" yields int - a + really silly typo (thanks, Michael!). + +28-Sep-1999 (Lars Duening) + - (exec.h, closure.c, interpret.c, object.c, simul_efun.c, prolang.y) + Changed FUNCTION_NAME into FUNCTION_NAMEP to make sure + people (like me) don't use it directly (alignment!). + - (array.c) Corrected a mis-use of FUNCTION_NAME() which could lead + to Bus Errors due to misaligned data accesses (thanks, Sunblood!) + (b-990819-0, but see 03-Oct-99 as well) + - (sprintf) Commented, beautified, and two changes: formatting erros + now throw an error(), and recursive arrays/mappings are recognized. + +27-Sep-1999 (Lars Duening) + - (swap) Commented and beautified. + - (stralloc) Commented and beautified. + +26-Sep-1999 (Lars Duening) (3.2.8-dev.147) + - (simul_efun) Commented and beautified. + - (wiz_list) Commented and beautified. + +25-Sep-1999 (Lars Duening) + - (interpret.c) Corrected a nasty crasher in the multiplication of + arrays of malloced strings (thanks, Michael!). + - (regexp) Beautified it, but didn't add many comments. + +24-Sep-1999 (Lars Duening) (3.2.8-dev.146) + - (prolang.y, lex.c, closure.c) Added #'parse_command. + - (prolang.y) Corrected a rare problem with the code generated + for '&(expr[x])' and '&(expr[_t (which are shortcuts for the old 'struct 's); + mainly used to decouple the header files. + - (other files) Adapted to use the _t types. + +12-Aug-1999 (Lars Duening) (3.2.8-dev.136) + - (strfuns) Increased the possible size of a strbuf from 2**16 to 2**32. + - (mempools, alloca.c, Makefiles) Added mempools: specialised allocators. + - (array.c, lex.c, ptrtable) Added uses of mempools where useful. + +11-Aug-1999 (Lars Duening) (3.2.7-dev.135 == 3.2.7-pre.1) + - (lpmud.prj, patchlevel.h, hosts/be/Makefile) Introduced new source + branch '--

.*' to hold the pre-releases during the shakedown + period before the 'official' release. Features and such in these + pre's are fixed, only fixes for final bugs take place. + +09-Aug-1999 (Lars Duening) + - (mapping.c) Efun m_reallocate() returned the old (freed) mapping, + not the new one. + - (interpret.c) Before every bytecode evaluation, inter_sp and inter_cp + are updated. + - (pkg/ip6-aix) AIX/IPv6 package added. + +04-Aug-1999 (Lars Duening) (3.2.7-dev.134) + - (util/xerq/) Corrected a couple of typos (I hate not being able + to compile this!) (thanks, Freaky!). + - (simulate.c) Cosmetic for 'status tables': the apply-cache stat + lacked a divider. + +31-Jul-1999 (Lars Duening) (3.2.7-dev.133) + - (interpret.c) '*', '*=': inter_sp wasn't set properly before error() + was called. (thanks, Michael!) + - (array, swap.c) Swapping in an array ignores the current size limit. + (thanks, Michael!) + - (efuns.c) Efun terminal_colour(): the temporary buffer for the current + line is now potentially unlimited. + - (util/xerq/) Integrated patches from UNItopia, which remove a couple + of warnings and works around the repeated closing of sockets. + (thanks, Freaky!) + +30-Jul-1999 (Lars Duening) + - (efuns.c) Efun trim(): forgot a check for the string end when trimming + left. This caused trim("") to core. (thanks, Freaky!) + +30-Jul-1999 (Lars Duening) (3.2.7-dev.132) + - (gcollect.c) Oops, forgot to change two calls to free_vector() into + free_array(). (thanks, Freaky!) + - (interpret.c) Efun mkmapping() could have problem with oversized + arrays. + +29-Jul-1999 (Lars Duening) (3.2.7-dev.131) + - (simulate.c) I am surprised nobody complained about this one: when + an error occured, the runtime stack was unrolled too early and + left the runtime_error() apply with no valid commandgiver. + - (func_spec, simulate) New efuns set_limits(), query_limits() and + limited() to handle runtime limits. (f-981229-11) + - (backend, main, simulate): array, mapping, and file transfer limits + are all settable from commandline and through the limit efuns. + - (interpret.c, efuns.c) Code for efuns like object_info() + now use the mudlib/sys/ includes to generated their results. + - (interpret.c, prolang.y) The '*' and '*=' operators now allow + to multiply strings/arrays with numbers. + +28-Jul-1999 (Lars Duening) + - (lots of files) Removed trailing spaces. + - (main, backend, lex, interpret, simulate) eval_costs are now counting + up from 0 and are tested against a positive limit. The limit can + be 0, in which case the eval costs are still counted but can grow + without limit. This is just a preparation for the oncoming code, + and might even work. + +27-Jul-1999 (Lars Duening) (3.2.7-dev.130) + - (efuns.c) Efun trim() also accepts a string of characters to trim. + - (array.h, datatypes.h, closure.h, mapping.h) Moved the definitions + of non-svalues back into their associated module header files. + - (datatypes.h, stralloc.h) Wrapped setting of svalues into nice + put_() macros. For once, the sources shrank a few lines + instead of growing :-) + +26-Jul-1999 (Lars Duening) (3.2.7-dev.129) + - (array.h, mapping.h, object.h, and dependees) Streamline the refcount + handling in macros ref_(), deref_() and free_(). + Not necessary in terms of typesafety, they make the source a bit + more readable, and less likely that a ref++ is forgotten. + +23-Jul-1999 (Lars Duening) (3.2.7-dev.128) + - (lex.c, prolang.y) The inline function variables weren't initialized + properly nor checked, leading to interesting crashes when the driver + tried to freed non-existing memory. + - (lex.c, strfuns) Rewrote the inline closure scanner to cope with + linefills. + +22-Jul-1999 (Lars Duening) + - (access_check.c) A null-message could cause a random memory + write. + - (strfuns.c) Corrected a write beyond boundary. + - (lex.c) Inline function scanning: newlines didn't trigger a + buffer refill in time. + +22-Jul-1999 (Lars Duening) (3.2.7-dev.127) + - (actions, func_spec) New efun 'execute_command()' implements + a low-level access to the command parser. + - (prolang.y, exec.h) New optional driver hook H_COMMAND, which + replaces the driver based command handling with its own. + (obsoletes f-990204-1 and f-990203-09) + - (make_func.y) Lookup failures yield an error message, not just + an exit(1). + - (func_spec, efuns) New efun 'trim()' to trim characters from + a string. (f-981229-24) + - (settings/) Small corrections to 'default', added 'wunderland'. + - (pkg/ip6/) Added the experimental IPv6 patch from Uwe (thanks!). + +21-Jul-1999 (Lars Duening) (3.2.7-dev.126) + - (settings/) Updated the tubmud settings file, added the sticklib + file. All scripts now use 'exec' to start the configure script, + allowing more meaningful exit codes. + - (simulate.c) Caught errors now produce a tracedump on stdout/stderr + (thanks, Sunblood!). + - (mud/sticklib/) Added the StickLib changes (thanks, Doomdark!) + - (lex.c) 'check last char before :)' stumbled over Newline characters. + - (prolang.y) Inline closures: removed an interaction between typed + inline closures in untyped functions. + - (actions.c, comm) Notify-fail handling is now in actions.c, this + also means that notify-fail messages are saved over nested + commands. + - (actions.c) notify_fail is available for NPCs, too: the text + will be told to the NPC. (f-990204-5) + - (func_spec, actions) New efun 'query_notify_fail()' returns the + current notify-fail setting. (f-990217-2) + - (func_spec, actions) New efuns 'command_stack()' and + 'command_stack_depth()' to query the command stack. + +20-Jul-1999 (Lars Duening) (3.2.7-dev.125) + - (simulate, interpret.c, backend.c) Player command execution is now + stacked, meaning that after a command() the previous command giver, + verb, etc are restored. This does not yet extend to notify-fails + though. + - (actions.ch) New source files holds the functions related to + command parsing and action management. + +19-Jul-1999 (Lars Duening) (3.2.7-dev.124) + - (prolang.y) Removed a spurious debug printf(). + - (backend, call_out.c, closure.c, interpret.c, simulate.c, main.c) + Generalized the error_recovery_info stack into a runtime context stack. + +18-Jul-1999 (Lars Duening) (3.2.7-dev.123) + - (settings) Updated the tubmud settings file. + - (autoconf/configure.in, configure) Unfortunately it's not just + gcc 2.8.1 on Solaris which stumble over the float/branch test. + - (prolang.y) Removed a nasty interaction between disabled local + scopes and for() statements (which unfortunately didn't manifest + itself in earlier tests). Also, the local_scopes pragmas are + check only when entering a function. + - (otable.c) The table status threatened to print some stack garbage. + - (main, config.h.in, interpret.c, array.c, mapping.c, object.c, + simulate.c) Array and mapping size limits are now commandline + options; and a setting of 0 disables the limit checks. + +16-Jul-1999 (Lars Duening) + - (autoconf/configure.in, configure) Oops, a typo in configure.in + really messed up the script. + - (backend.c) Following a notice from Stefan Lichtenhagen, I removed + the safety factor '*2' from f_regreplace() - the error it avoided + was fixed in dev.28. However, if this efun should cause crashes + again, this factor is one thing to try out. + - (simulate.c) Stupid bug, the second: clone_object() checked the + P_NO_CLONE flag before swapping in the program. (thanks, Manu!) + - (lex, prolang.y) New pragma 'no_local_scopes' turns off local + scoping to cater for legacy code; the second pragma 'local_scopes' + turns it back on. + - (settings/) Added settings file for Avalon (thanks, Thorsten!) + +16-Jul-1999 (Lars Duening) (3.2.7-dev.122) + - (lex, prolang.y) Added inline closures ("functionals") using the + '(: :)' syntax MudOS invented. As a sideeffect, + the lexer now knows the '#line ' directive, and identifier + names may start with '$'. (thanks, Righ!) (p-990326) + - (func_spec, interpret.c, simulate) New efun query_command() returns + the full command given by the player (thanks, Ugh!). + +15-Jul-1999 (Lars Duening) (3.2.7-dev.121) + - (prolang.y) The first expression in a for() may define local variables + which scope is the whole for() statement. + - (func_spec, interpret.c) More new bitstring efuns: count_bits(), + invert_bits(). + +14-Jul-1999 (Lars Duening) (3.2.7-dev.120) + - (func_spec, interpret.c) New bitstring efuns last_bit() and next_bit(). + (thanks, Matthew!) (f-990203-14) + - (access_allow, comm, mudlib/ACCESS.ALLOW) Access rules can take + portnumbers into account. (idea from Gokhan, f-981211) + +13-Jul-1999 (Lars Duening) + - (bugs/) Cleaned up the directory a big; created summary files b-summary + and f-summary. + - (func_spec, interpret, object, doc/efun/) New efun object_time() + returns the creation time of the object. (idea from Daniel, + f-990324-2) + - (lex, prolang.y, simulate.c, exec.h) New pragmes 'no_clone' to disallow + clones of an object, and 'no_inherit' to disallow inheriting a + program. (thanks, Daniel!) (f-990324-0, p-990417-0) + - (comm.c) Error ESHUTDOWN on read yields a proper message and removes + the interactive player. + - (func_spec, interpret.c) New bitstring efuns and_bits(), or_bits(), + xor_bits(). (idea from Matthew, f-990203-14) + +12-Jul-1999 (Lars Duening) + - (func_spec, interpret.c) New efuns pow(), floor(), ceil() and atan2(). + - (config.h.in, configure, interpret.c) If configuration option + DYNAMIC_COSTS is enabled (default is off), string additions are more + expensive for long strings (this is handy against the killer-loop + for (s=""; s += "a"; ) ). + +12-Jul-1999 (Lars Duening) (3.2.7-dev.118, 119) + - (autoconf/configure.in, configure) gcc/cc1 2.8.1 on SunOS 5.7 falls into + catatonia when compiling the float/branch-incompatibility test. + Inserted a workaround. + - (prolang.y, lex, func_spec) Scope of variables in nested local blocks + ends with the defining block as it should. The space of such variables + is reused for other local blocks. (f-990203-05) + - dev.119: Small correction: function local variables (depth 2) can't + hide function arguments (depth 1); + +11-Jul-1999 (Lars Duening) (3.2.7-dev.117) + - (machine.h.in) Oops, forgot to update this. + - (Makefile.in, port.h) Compile-time define NO_INLINES turns off inlining. + - (interpret, stralloc, strfuns.c, smalloc) Straightened out the + INLINE uses. + +10-Jul-1999 (Lars Duening) (3.2.7-dev.116) + - (closure.c) Removed an erroneous errormessage when creating sefun + closures with large indices (thanks, Daniel!). + - (configuration, several files) Mappings have now an upper size limit + of MAX_MAPPING_SIZE keys (defaults to 5000). (f-990708-1) + +09-Jul-1999 (Lars Duening) (3.2.7-dev.115) + - (config.h.in, autoconf/configure.in, settings/default) All of + of config.h is now configurable (and is it just me, or was + the original value parsing really broken?). + - (settings/) Added files for all Muds I had a config.h of. Oh, and + the files are now scripts in themselves :-) + +08-Jul-1999 (Lars Duening) (3.2.7-dev.114) + - (machine.h.in, port.h) port.h now knows about the supported + (working) architectures and how to find the host-specific include + files. HOST_INCLUDE is still recognized, but optional. + - (machine.h.in, array.h, driver.h, port.h, interpret, simulate, random): + Use SIZEOF_CHAR_P instead of SIZEOF_P_INT. + - (Makefile.in) Target 'distclean' also deletes the + config.cache/status/log files. + - (other files) Added some documentation to the new autoconfig system. + +08-Jul-1999 (Lars Duening) (3.2.7-dev.113) + Checked in the changes provided by Reinhard (thanks!): + - (machine.h.in, config.h.in, configure, autoconf/) Autoconfiguration + is now based on autoconf 2. The old configuration code is in the + subdirectory config-old/ held as backup. Special features are: + - rxcache and UDP port can be enabled/disabled explicitely. + - Enabling ERQ defines a symbol ERQ_INCLUDE pointing to the + correct include file (util/erq/erq.h resp util/xerq/erq.h). + - All config.h options can be set using parameters to configure. + configure --help will print the (long) list of available options. + - (func_spec) Fixed a rare case of an erroneus inclusion of send_imp() + UDP is disabled and thus the function f_send_imp() won't be compiled. + - (comm.c) erq.h is included only when the driver is compiled for + using the erq demon. + +07-Jul-1999 (Lars Duening) (3.2.7-dev.112) + - (strfuns.c) Corrected off-by-one mistakes, and the length of the + final string. + - (datatypes.h, other files) Straightened the use of STRING_VOLATILE + (purely cosmetic). + +07-Jul-1999 (Lars Duening) (3.2.7-dev.111) + - (strfuns, efuns, simulate): Modified efun debug_info() to return + the status information instead of printing it. Added "malloc" as + additional second argument to the DINFO_STATUS command. + - (interpret) Efun get_type_info() returns whether a string is shared + or not. + - (simulate, smalloc): Deactivated 'debugmalloc' and + 'showsmallnewmalloced' and the associated code. + - (simulate, efuns, dumpstat, interpret): Added option DINFO_DUMP to + debug_info() to implement the 'dumpallobj' and 'opcprof' command. + - (interpret.c) Efuns trace() and traceprefix() are now validated + with the master-lfun 'valid_trace()'; the master-lfun + 'query_player_level()' is thus no longer needed. + - (efuns, simulate, object): Efun set_is_wizard() is now optional, + and with it the object flag O_WIZARD. + - (object, simulate, prolang, efun): Object flag O_APPROVED is gone. + +06-Jul-1999 (Lars Duening) + - (comm, simulate.c) Undid the last change. Now it is legal again for + the modify_command-hook to change the command_giver; this change + stays active for the execution of the command, and the original + commandgiver is passed to the NOTIFY_FAIL hook. + - (simulate.c) The MODIFY_COMMAND hook is now called first, even + before special commands like 'status' are parsed. This allows + the hook to filter out uses of these commands. + - (strfuns) New file holding string functions (for now). + - (simulate, otable, rxcache, stralloc, efuns, call_out, heartbeat): + Rewrote the status functions to use strbufs, in anticipation to + make these special commands into real efuns. + +05-Jul-1999 (Lars Duening) (3.2.7-dev.110) + - (comm.c) include of was missing. + - (simulate.c) After the modify-command hook was called, the commandgiver + and current object are restored their previous setting in case the + hook changed them. (thanks, Daniel!) + +04-Jul-1999 (Lars Duening) + - (closure.c) Corrected a nasty mistyping in compile_lvalue(). (thanks, + Freaky!). + - (lex.c, interpret.c) Removed two warnings. + - (doc/efun) Removed the manpage for the long-gone efun query_host_name. + +03-Jul-1999 (Lars Duening) (3.2.7-dev.109) + - The driver compiles again with egcs. + - (efuns.c) Bugfix for efun terminal_colour(): terminal_colour("bla", ([ + "bla":"blu"]), 1) returned "blu" instead of "bla". (thanks, Michael!) + - (efuns.c) The efun sscanf() used the wrong function to report argument + errors. (thanks, Freaky!) + +02-Jul-1999 (Lars Duening) + - (hosts/be/be.h, .../Makefile, .../machine.h, other files): Adapted for + BeOS 4.5. This involved adding numerous casts to make the now pickier + compiler happy. But now egcs starts crashing... + - (efuns.c) Found another shortcoming of present_clone() (and the reason + why I didn't see errors before *blush*). + +01-Jul-1999 (Lars Duening) + - (efuns.c) Fixed two nasty bugs in efun present_clone(): make_name_sane() + could return NULL, and the comparison was done against the wrong name. + - (interpret.h) To be safe, macro put_number() takes the sp as argument. + - (call_out.c) When setting current_prog for efun closures, the code + now makes sure that the program is swapped in. + +30-Jun-1999 (Lars Duening) (3.2.7-dev.108) + - (mud/lp-245/obj/simul_efun.c) Duh, had a complete brainfart yesterday + when adapting present_clone() to compat mode. + +29-Jun-1999 (Lars Duening) (3.2.7-dev.107) + - (doc/efun) Removed the files for the long-gone efuns find_living(), + find_player(), set_living_name(), add_worth() and wizlist(). + - (doc/efun/all_environment) Corrected a typo. + - (efuns.c) Corrected a misformed condition in efun terminal_colour(). + - (gcollect.c) If a swap-in fails, the GC raises a fatal error (instead + of just crashing). + - (mud/lp-245/) Added the old LP-245 mudlib, of course adapted to + this driver. + - (func_spec, efuns) New efun present_clone() to find objects with + a specific blueprint (suggested by Coogan). + +29-Jun-1999 (Lars Duening) (3.2.7-dev.106) + - (exec.h, interpret.c, call_out.c) Efun-closures are now properly + identified, and call_outs to efun-closures set current_prog to the + prog of the bound object. This sources still hold some DEBUG-printfs. + +28-Jun-1999 (Lars Duening) (3.2.7-dev.105) + - (interpret.c) Added some argument checks to efun terminal_colour(). + - (func_spec, doc/efun/environment) Documented that efun environment() + can also take a string as argument. + - (interpret.c) 'Indexing on illegal type' no longer dumps trace (what + for did that do that any way?). + - (main, backend.c, object.c) TIME_TO_RESET and TIME_TO_CLEAN_UP are now + defaults for the runtime options '--reset-time' and '--cleanup-time'. + - (interpret.c) Reactivating a destructed didn't update the number + of listed objects. + +26-Jun-1999 (Lars Duening) + - (main.c, interpret.c, smalloc.c) Cosmetics. + +25-Jun-1999 (Lars Duening) (3.2.7-dev.104) + - (lotsa files) NATIVE_MODE is gone - the only real difference it made + was the restriction of command() to the current object only, and + that can be handled by a simul-efun. + - (interpret.c) Oops, privilege_violation() slightly misinterpreted + the result from the master apply. + +25-Jun-1999 (Lars Duening) (3.2.7-dev.103) + - (lotsa files) EUIDS mode is now automatic since most of the code + was there in any case. + + New runtime option '--[no-]strict-euids' + which enables/disables the enforcement of euids known from the native + mode. When enabled, the LPC macro "__STRICT_EUIDS__" is defined. + The default setting is defined in config.h by STRICT_EUIDS; use + of an old config.h with NATIVE_MODE defined has (for now) the + same effect. + +24-Jun-1999 (Lars Duening) (3.2.7-dev.102) + - (backend, efuns.c, heartbeat, interpret.c, object, simulate, + all config.h) OLD_RESET is gone. + +24-Jun-1999 (Lars Duening) (3.2.7-dev.101) + - (mudlib/sys/{trace.h,input_to.h,files.h,debug_info.h}: Added these + includes with definitions for the efuns trace(), input_to(), + file_size(), get_dir(), and debug_info(). + - (interpret, efuns, func_spec, exec.h) Finished commenting the + interpreter. + +20-Jun-1999 (Lars Duening) (3.2.7-dev.100) + - (interpret) to_string(object) in compat mode added a leading + slash. program_time() freed its argument before querying it. + And recombine_free_lists() is gone for good. + - (interpret, func_spec, exec.h) After a long day: more comments + added (17155 lines done, 3150 to go). In particular, + eval_instruction() is commented *phew* (but it's still big + and ugly). + +18-Jun-1999 (Lars Duening) (3.2.7-dev.99) + - (interpret, func_spec, exec.h) Something new: more comments. + (12558 lines done, 5800 to go). + +16-Jun-1999 (Lars Duening) + - (interpret.c) The operators +=, -=, *=, /= now accept a float left + and an int right. + - (interpret, efuns) Efun terminal_colour() moved out from the interpreter + into efuns.c. And it received comments during this move. + +15-Jun-1999 (Lars Duening) + - (interpret.c) Binding an unbound lambda to two objects and destructing + the originating object freed the lambda. (thanks, Kirnan & Michael) + +14-Jun-1999 (Lars Duening) + - (driver.h, port.h, all files commented so far) New type 'Bool' and its + smaller sibling 'CBool' introduced. + - (autoconf/configure.in, configure, port.h, regexp, ptrtable) Replaced + CHARBITS by CHAR_BIT, adapted the generation of CHARBIT_MASK. + - (datatypes.h, func_spec, exec.h, interpret) Something new: more + comments (8700 lines done, 9000 to go). Actually I started wrapping + the bytecode interpretation into its own types and macros, which + may increase portability, and at least make the critical places + easier to find. + +13-Jun-1999 (Lars Duening) + - (array.c) Efun inherit_list() just copies the program names, but + doesn't make them shared. Since they aren't shared anyway, this + makes the function much faster. (thanks, Michael!) + - (object.c) If the H_RESET hook is a closure, a result < 0 will disable + reset for this object. (thanks, Michael!) + +12-Jun-1999 (Lars Duening) + - (interpret.c, mapping.c) Both m_indices() and map()/map_mapping() + called check_map_for_destr() twice, wasting time. (thanks, Michael!) + +12-Jun-1999 (Lars Duening) (3.2.7-dev.98) + - (datatypes.h, func_spec, exec.h, interpret) Oh boy: more comments + (6700 lines done, 10000 to go). + +10-Jun-1999 (Lars Duening) + - (call_out.c) Adding callouts from within a callout resulted + in the new callouts inserted in the wrong place when the active + callout had an odd delay (and thus a negative 'time left' entry). + If the new call_out had a MAX_INT delay, the current callout list + was effectively disabled. (b-990214-0) + - (backend.c) Added Michaels improvement to the swapping algorithm + (thanks!). + +05-Jun-1999 (Lars Duening) + - (smalloc.c) As I feared: trying to print more information about + gc'ed objects may crash the driver *sigh*. + + Patches provided by Michael (thanks!): + - (backend, interpret, simulate) Improved the handling of closure hooks: + now setting a driver hook from within the hook works well, too. + - (closure.c) symbol_variable() properly recognizes objects with + pending program replacement. + - (interpret.c) dump_trace() recognizes alien lfuns properly. + - (interpret.c) Calls to alien lfun closures didn't set extern_call. + - (interpret.c) Calls to F_UNDEF closures (closures whose object + was destructed) generate a proper error message. + - (swap.c) If a closure variable was changed to F_UNDEF by the garbage + collector, the swapper now duly writes this new info into the swap file. + - (mapping.c) During a GC, mappings didn't check for changed alien lfuns. + Some more suggestions by Michael: + - (interpret.c) to_object() on F_UNDEF closures returns 0. + - (object.c) free_object() miscounted the amount of memory used by + objects. + - (simulate.c) Memory display in 'status' for objects and programs + now both display ' ()' (before, only the objects + status displayed that, programs displayed ' ()' ). + - (swap.c) If variables could not be unswapped, the swapper didn't clear + them properly. + +24-May-1999 (Lars Duening) (3.2.7-dev.97) + - (interpret, exec.h, heartbeat.c, comm.c, make_func.y) More comments, + really. + +22-May-1999 (Lars Duening) (3.2.7-dev.96) + - (config.h, interpret.c, closure.c) Corrected some typos. + +22-May-1999 (Lars Duening) (3.2.7-dev.95) + - (interpret.c) Guess what: more comments. + - (interpret.c, sprintf.c) to_string() and sprintf() stumbled over + variable closures left dangling after a replace_program(). (thanks, + Michael!) + - (prolang.y) insert_inherited: the loop for the case '*::f' tended to + clobber its own control variable 'ip', causing the omission of + function calls. (thanks, Michael!) + +18-May-1999 (Lars Duening) (3.2.7-dev.94) + - (config.h, hosts/be/config.h) Increased the default for MAX_LOCAL + to 50. + - (interpret.c) Even more comments. + +17-May-1999 (Lars Duening) (3.2.7-dev.93) + - (doc/efun/filter_{mapping,indices}) Corrected a wrong phrase. + (thanks, Zwirch!) + - (interpret.c) Some more comments. + +16-May-1999 (Lars Duening) (3.2.7-dev.92) + - (object, backend.c, dumpstat.c, efuns.c, interpret.c, simulate.c, + sprintf.c, ../mudlib/sys/objectinfo.h, doc/efun/object_info): + New object flag O_REPLACED for objects with replaced programs, + so that clonep() stops flagging such blueprints as clones. + (suggested by Michael) + - (datatypes.h, interpret) More comments. + - (simulate.c) Streamlined the namehandling in clone_object(). + +14-May-1999 (Lars Duening) (3.2.7-dev.91) + - (backend.c) Removed one 'var might be clobbered' warning. + - (datatypes.h, interpret) More comments. + - (object.c) When restoring a mapping of form '([:])', the + is made sure to be positive. (thanks, Michael!) + +13-May-1999 (Lars Duening) (3.2.7-dev.90) + - (datatypes.h, interpret) More comments. + +12-May-1999 (Lars Duening) (3.2.7-dev.89) + - (interpret.c, doc/efun/...) Efun symbol_function() won't create + closures from protected lfuns of other objects. (thanks, Michael!) + - (func_spec, comm, interpret.c, config.h, driver.h, main) + query_mud_port() did not accept int arguments as documented; also, + the multiport feature is no longer optional. + - (smalloc.c) write_lpc_trace() tries to write as much information about + an object as possible, not just 'Doesn't exist anymore'. + - (interpret.c) destruct() now accepts destructed objects as arguments. + (thanks, Largo!). + +11-May-1999 (Lars Duening) (3.2.7-dev.88) + - (object.c) Fixed some memory leaks on errors during a restore. (thanks, + Michael!) + - (interpret.c) Some more comments. + +10-May-1999 (Lars Duening) (3.2.7-dev.87) + - (interpret.c) Removed a crasher in call_lambda() on closures of + not-inherited variables. (thanks, Michael!) + - (closure.c) Creating a symbol_variable() now protects it against + replace_program()s. (thanks, Michael!) + - (array.c, efuns.c, exec.h, interpret.c, prolang.y) Duplicate virtual + inherits are no longer listed in the result of inheritlist() and + the various statistical functions. (thanks, Michael!) + +09-May-1999 (Lars Duening) (3.2.7-dev.86) + More patches from Michael: + - (backend.c, interpret, gcollect.c) interpret:call_lambda() no longer + protects closure with an extra refcount; instead old, replaced driver + hooks are stored in an array and freed by the backend (or the + garbage collector). + - (backend.c) When computing a 'real soon' swapping time for objects + with no reset, the new swap time became negative, effectively + disabling swapping for this object. + - (interpret.c) Improvement of efun terminal_colour(), reducing the number + of created shared strings. + - (simulate.c) If the loading of objects fails, the name of the object + is printed with the error message. + - (swap.c) If an object WILL_CLEAN_UP on swap in, the swapper doesn't + bother to check for the function 'clean_up'. + - (interpret.c, prolang.y) Added a couple of missing updates of + time_of_ref. + - (interpret.c) Fixed a crasher when using to_string() on an lfun + closure for a swapped program. + - (simulate.c) lookfor_object() no longer swaps in the object, instead + the caller does it when needed. As this is rather rare, the effect + should be reduced disk activity. + - (ed.c, heartbeat.c) Removed two compilation warnings for printf() + args. + +04-May-1999 (Lars Duening) + - (smalloc.c) _large_malloc() didn't compile in SMALLOC_LPC_TRACE due to + a missing 'const' specifier. (thanks, Freaky!) + +02-May-1999 (Lars Duening) (3.2.7-dev.85) + - (backend.c) time_of_ref is fudged only after a reset of a swapped + object, not after a cleanup. Also, if the cleanup hook is a closure, + the time_of_ref is updated manually to make sure that the cleanup + won't occur in every backend loop. + - (simulate.c) lookfor_object() sets the time_of_ref of an object if + it had to swap it in. This is useful for blueprints for inheritance + and cloning, which would thrash otherwise. (thanks, Michael!) + - (lex.c) The test against recursive calls in _expand_define() crashed + the driver if an error occured during the macro expansion and the + error handling itself called macro expansion (e.g. through the + _expand_define_() efun). For now, non-reentrant recursive calls + are allowed again. + +30-Apr-1999 (Lars Duening) (3.2.7-dev.84) + - (backend.c) If reset or cleanup cause an object to be swapped in, + the time_of_ref is fudged so that the object will swap out again + pretty soon, but not immediately. + - (hosts/be/Makefile) Re-introduced cross-compiling support for x86 + on PowerPC. + +29-Apr-1999 (Lars Duening) + - (doc/efun/caller_stack_depth, HISTORY) Corrected two typos (thanks, + Zora!). + +28-Apr-1999 (Lars Duening) (3.2.7-dev.83) + - (backend.h, closure.c, interpret.h, efuns.c) Move error_recover_info + definition into backend.h, adapting the other files, and added + a missing include to efuns.c + - (interpret, exec.h, datatypes.h) Began commenting. + +27-Apr-1999 (Lars Duening) (3.2.7-dev.82) + - (heartbeat.c) 'status tables' could cause a division by 0. + Integrated a patch from Michael: + - (backend.c) process_objects() now checks if a swap was successful + before setting did_swap (since some objects won't swap). + - (interpret.c) Added some ASSIGN_EVAL_COST in critical efuns. + - (interpret.c) call_lambda() did not update time_of_ref/O_RESET_STATE + on calls. Furthermore, objects bound to (s)efun closures were not + swapped in, which caused segfaults in dump_trace(). + +25-Apr-1999 (Lars Duening) (3.2.7-dev.81) + - (backend.c, swap.c) Swapped-out objects are again swapped in for + reset. Skipping the call and just setting a due-time in the + swapper resulted in too few calls to reset(), especially with + small swap times. (thanks, Michael!) + - (backend.c) Removed the RESET_DEBUG code sequences. + - (interpret.c) Calls to tefuns and vefuns assign the eval costs + first. + - (sprintf.c) If possible, file:line of an offending sprintf() statement + are appended to all error messages, not just to the one printed + on stderr. + - (etc/icon-*.ppm) The Icon for the Gamedriver. + - (hosts/be/{Makefile, icon-*.raw, driver.r, driver.rscr) Added the + icon to the compiled resources. + - (heartbeat.c) Fixed a crasher which occured when a heart_beat() + function managed to remove all remaining objects from the hb list. + +19-Apr-1999 (Lars Duening) + - (mapping.c) When adding mappings, the second summand was freed before + the actual addition (thanks, Daniel!). + - (doc/LPC/modifiers) added from TubMud (thanks, Fiona!). + +17-Apr-1999 (Lars Duening) (3.2.7-dev.80) + - (doc/) Small changes, improved the docs to switch, references + and alists (thanks, Freaky!). + - (lex.c) Bugfix from Daniel: Variables in closure may start with '_'. + - (closure.c) Bugfix from Daniel: #'[<] indexing corrected. + - (interpret.c) unmkmapping() also accepts key-only mappings (thanks, + Holger!). + - (func_spec) Efun caller_stack() was defined to return 'int' instead + of the correct 'object *'. (thanks, Robb!). + - (driver.h, smalloc, main) Added some 'const' to 'char *' where + useful. + - (main.c, lex.c) The list of predefs copied from the commandline is + now deallocated after the defines have been entered into the + table. This removes a spurious 'small block freed' warning on + garbage collections. + +04-Apr-1999 (Lars Duening) (3.2.7-dev.78-79) + - Small changes, just cosmetics. + +01-Apr-1999 (Lars Duening) (3.2.7-dev.77) + - Manually copied all changes since dev.76 into the Re-Release of 3.2.6. + - (call_out.c) Undid the change that callout can call protected + functions: this inability was intentional for security reasons. + - (backend.c) The consistency check of the object list was still + active. Now the code is still there, but deactivated. + - (doc/LPC/functions, doc/efun/call_out, doc/efun/call_other) Added + a bit documentation regarding protected functions (thanks, Macbeth!). + - (interpret.c, doc/LPC/operators) Subtraction allows any width of + the subtrahend. + +31-Mar-1999 (Lars Duening) + - (HISTORY, hosts/be/Makefile) Small corrections. + +31-Mar-1999 (Lars Duening) -- Release 3.2.6 + - Froze 3.2.6-dev.76 for release. + +31-Mar-1999 (Lars Duening) (3.2.6-dev.75) + - Changed the directory structure so that the sources are no longer + in the top directory. But there's still a long way to go before + a simple 'build' in the top directory does everything. + - (doc/...) Integrated the 'driverdocs', previously maintained + by Stefan Petri (thanks!). + +31-Mar-1999 (Lars Duening) (3.2.6-dev.74) + - (doc/efun/...) Typo corrections (thanks, Coogan and Freaky!) + - (array.c) map_array() did not check if objects in the array were + destructed during the execution (thanks, Righ!). (b-990329-0) + - (util/make_docs/make_docs.c) Linux-adaption was not complete + enough. + +30-Mar-1999 (Lars Duening) (3.2.6-dev.73) + - (lex.c) *duh* the last change tested for COMPAT, not the correct + COMPAT_MODE define. + +29-Mar-1999 (Lars Duening) (3.2.6-dev.72) + - (lex.c) __FILE__ and __MASTER_OBJECT__ return names without leading + slash in compat mode. + - (backend.c, interpret.c) Fixed some warnings. + - (doc/efun/{sizeof, widthof, load_name}) Cosmetics. + - (comm) Undefining ERQ_DEMON did not compile (thanks, Bardioc!). + - (prolang.y, object.c) The __INIT function is now protected instead + of global (thanks, Freaky!). + - (call_out.c) Efun call_out(string,...) can now call protected functions + as well (thanks, Freaky!). + +28-Mar-1999 (Lars Duening) (3.2.6-dev.71) + - (object, simulate, backend.c, interpret.c, efun_defs.c, dumpstat.c + smalloc.c) Changed the object list to a double-linked list, allowing + destructed objects to be removed immediately. In itself not a big + deal, but it allows future, more sorted incarnations of the object + list. + - (heartbeat.c,h) New module holding the heartbeat related code. + - (backend, interpret, simulate) Adapted for using the new heartbeat + code. Especially the backend loop now gives preference to the + heartbeats over resets/swaps - the latter are slowed down to + one reset/swap per cycle if there is not enough time. + +26-Mar-1999 (Lars Duening) (3.2.6-dev.70) + - (object, simulate, backend.c, interpret.c, efun_defs.c, dumpstat.c + smalloc.c) Changed the object list to a double-linked list, allowing + destructed objects to be removed immediately. In itself not a big + deal, but it allows future, more sorted incarnations of the object + list. + +26-Mar-1999 (Lars Duening) (3.2.6-dev.69) + - (backend.c) The logic in the computation of the average heartbeat + stats was wired backwards. + - (call_out.c, closure.c, comm.c, interpret.c, lex.c, regexp.c, simulate.c) + Removed a couple of warnings when compiling under BeOS/Intel. + - (port.c) get_current_time(): 'noted_alarms' is kept up to speed with + 'total_alarms'. (thanks, Michael!) + - (backend, main, lex.c, interpret.c, simulate.c, func_spec, doc/...) + After the current implementation of the free-running alarm, which + is needed by the MAX_TIME mechanism, proved unstable on some + platforms, the axe fell on this feature altogether. What started + out as a nice idea was on the best way to grow into a maze of + special cases, all ugly. Sorry, folks. + +25-Mar-1999 (Lars Duening) (3.2.6-dev.68) + - (backend.c) Corrected a possible division-by-0 in the heart + beat status output (thanks, Freaky!) + - (efuns.c) Efuns copy() and deep_copy() did copy quoted arrays. + (thanks, Michael!). + - (simulate.c, otable.c) Warnings in printf again... + - (doc/efun/previous_object) Clarified the difference between + previous_object() and previous_object(0). + +24-Mar-1999 (Lars Duening) (3.2.6-dev.67) + - (efuns.c) Efun deep_copy() leaked memory, and also has to copy + arrays/mappings with just one ref (thanks, Michael!) + - (backend.c) Oops, major fault in the changed efun heart_beat_info(), + writing over array limits. + - (func_spec, interpret.c, backend.c, config.h, doc/...) The + hard time limit is now by default turned off (but can be + activated on the command line). The efun get_eval_time() + was renamed to remaining_eval_time() to avoid a clash with + some mud's driver patches. See f-981229-11 and f-990324-3 + for further discussion. + - (main.c, simulate.c, port.h) Fixes related to MSDOS_FS: + Compiling with Cygwin under/for Windows didn't set the define. + legal_path() was a bit too restrictive. Added the define + to the list of options printed with '--options'. + +24-Mar-1999 (Lars Duening) (3.2.6-dev.66) + - (backend) Moved the heartbeat handling into process_objects() + as well, which also got rid of the clumsy heartbeat table + handling. Only the efun heart_beat_info() is slow now. + +24-Mar-1999 (Lars Duening) (3.2.6-dev.65) + - (backend, gcollect.c, interpret.c, object, otable, simulate.c) + Modified the list of objects so that the head and the end are + accessible through pointers. This allowed a better handling of + resets/cleanups/swapping such that the processing can be + aborted after ALARM_TIME and continued in a later cycle. This + should get rid of reset/...-induced lags. + As a result, the reset table introduced in dev.62 is no longer + necessary, nor is the config.h constant RESET_GRANULARITY. + backend.c still contains a sanity check in the main loop, + just in case. (f-990323-1) + - (otable.c) Removed another printf-related warning. + - (main.c, simulate) The name of the master object is assured to + be sensible (no leading '/' etc) (thanks, Freaky!). + +23-Mar-1999 (Lars Duening) (3.2.6-dev.64) + - (comm.c, efuns.c, interpret.c, otable.c) Removed a couple of possible + mismatches between format-strings and passed arguments. + - (hosts/unix.h, util/*) Several small tweaks for compilation under + Solaris 2. Still, the util/Makefiles need manual changes + in order to build correctly *sigh* + - (otable.c) It is now legal to call rtable_remove() with an object + which is not in the reset table - it happens when an object + is destructed during its own reset (thanks, Zwirch!). + - (interpret.c) If m_allocate() runs out of memory, a NULL 'mapping' + svalue was left on the stack -> BOOM. + - (prolang.y, simul_efun.c) Replaced bzero() by memset(). + - (main.c) The memory-reserve options had one extra 'd' in the long + form (thanks, Freaky!). + - (backend.c, object.c, otable.c) Made the reset handling resistant + against errors during the evaluation of reset(). + +22-Mar-1999 (Lars Duening) (3.2.6-dev.63) + - (backend.c, otable.c) Small bugfixes. Deactivated, but not deleted + the DEBUG printfs. + +22-Mar-1999 (Lars Duening) (3.2.6-dev.62) + - (config.h, backend.c, otable, interpret.c, simulate.c, swap.c) + Implemented new, hopefully less disruptive version of the reset + handling. To get the old handling, define OLD_RESET in config.h . + Under the new implementation, the objects are sorted by their + reset times (but grouped according to RESET_GRANULARITY) which + allows easy retrieval of the due objects. Additionally, every + backend cycle checks for due objects, but limits the number of + calls to whatever can be done in two seconds. After all, resets + are not supposed to be exact. + For now, there are a number of DEBUG printfs in the modules. + (f-990318-0) + +21-Mar-1999 (Lars Duening) (3.2.6-dev.61) + - (ptrtable.c,h) New module holding a generalized version of the pointer + table formerly located in object.c + - (dumpstat.c, interpret.c, simul_efun.c, object.c) Modified to use + the new pointer table. + - (func_spec, efuns, doc/efun/...) New efun copy() for shallow copies, + and deep_copy() for deep copies. (f-981229-12) + +20-Mar-1999 (Lars Duening) (3.2.6-dev.60) + - (func_spec, interpret.c) Efun clonep() now also accepts strings. + - (port.h, main.c, comm.c, ed.c, simulate.c) Made sure that MAXPATHLEN + is defined and used on all hosts for file name buffers + (thanks, Freaky!). + - (parse_old.c, prolang.y) Removed a couple of 'unwanted assignment?' + warnings. + - (lex.c) Reallocations of the defbuf are traced only when '-c' was + given on the commandline. + - (hosts/be/Makefile) Corrected a small problem in the dependency + generation which would lead to incomplete builds. + - (pkg/diff) Added the diff code from Ugh and Alfe. + - (func_spec, efuns, doc/efun/...) New efun object_info(). + - (interpret.c, doc/efun/...) Efun set_next_reset() just returns + the time until the next reset when passed 0 as argument. + +19-Mar-1999 (Lars Duening) + - (alloca.c) Corrected some ugly formatting. + - (func_spec, interpret.c, doc/efun/...) Nobody was really fond of + 'nameof()', so it's back to 'object_name()'. Well, it was worth + a try. + - (stralloc, sprintf.c, mudlib/master_skeleton.c doc/master/...) + Renamed master apply 'object_name()' to 'printf_obj_name()' due + to the clash with the new efun object_name(). + +18-Mar-1999 (Lars Duening) (3.2.6-dev.59) + - (comm.c, hosts/unix.h) Fixed the broken alarm() and UDP socket handling + for Cygwin. + - (func_spec, backend, interpret.c, lex.c, config.h, simulate.c, + doc/efun/...) + Added a time-based watchdog to the interpreter: its default setting + is given by MAX_TIME in config.h, it can be specified on the cmdline + with '--max-time', the actual value is available through the + macro __MAX_EVAL_TIME__, the remaining time can be queried with + the efun get_eval_time(). + - (func_spec, interpret.c) Efun notify_fail() returns 0, not void. + (f-990203-18) + - (backend.c) look_for_objects_to_swap(): The call granularity was + computed from the config.h macros, not from values set on the + command line. + - (func_spec, simulate.c, doc/efun/...) Efun set_this_player() also + accepts 0 as argument (and then simply clears this_player()). + +17-Mar-1999 (Lars Duening) (3.2.6-dev.58) + - (mapping.c, otable.c, efuns.c, comm.c) Fixed a couple of warnings + sent in by Freaky. + - (func_spec, doc/efun/...) clonep() and blueprint() take this_object() + as default argument (suggested by Freaky). + - (doc/efun/{clonep, assoc, insert_alist}) Small corrections, sent + in by Freaky. + - (lex.c) Added __MAX_EVAL_COST__ as predefined macro (suggested + by Chameloid). + - (interpret.c, simulate.c) Added the file to the 'Failed to load' + error messages (suggested by Nathan). + - (mapping.c, doc/efun/...) Modified map() and filter() so that for + 0-width mappings the value 0 is passed as 'data' value. + - (func_spec, interpret.c, doc/efun/...) Renamed efuns + {filter,map}_mapping() to {filter,map}_indices(). The old names + are still available as aliases. + - (func_spec, interpret.c) Renamed blueprint() to load_name(), + renamed file_name() to nameof() (the old name is still + available as alias) and introduced program_name(). + +16-Mar-1999 (Lars Duening) (3.2.6-dev.57) + - (mudlib/master.c, wk/diff.{c,man}) Wrong lineends. Ooops. + +16-Mar-1999 (Lars Duening) (3.2.6-dev.56) + - (mapping) Improved the implementation of efun m_rewidth(). + - (func_spec, interpret.c, mapping, doc/efun/filter) New + efun filter() to filter mappings and arrays. (sort of f-981229-16) + - (func_spec, mapping, doc/efun/...) Renamed m_rewidth() to + m_reallocate() - this name comes closest. + - (func_spec, interpret.c, doc/efun/...) Renamed mapping_contains() + to m_contains(). The old name is available as alias. + - (util/xerq/socket.c) Changed a wrong datasize in erq_accept(), + this should improve handling of TCP sockets (thanks, Sieni!). + - (array.c) Added an improvement to the handling of special + cases in subtract_array() (thanks, Sunblood!). (p-990316) + +15-Mar-1999 (Lars Duening) + - (func_spec, mapping, doc/efun/m_rewidth) New efun m_rewidth() + to change the width of a mapping. (f-981229-08) + - (func_spec, mapping, interpret.c, doc/efun/map) New efun map() + to map arrays and full-width mappings. (sort of f-981229-16) + +15-Mar-1999 (Lars Duening) (3.2.6-dev.55) + - (func_spec, interpret.c, doc/efun/m_values) Changed efun m_values() + to return any column of a mapping. (f-981229-07) + - (func_spec, interpret.c, doc/efun/widthof) New efun widthof() to + return the width of a mapping. (mentioned in f-981228-08) + - (func_spec, interpret.c, doc/efun/m_allocate) Renamed efun + allocate_mapping() to m_allocate(). + - (func_spec, interpret.c, doc/efun/unmkmapping) New efun unmkmapping() + to deconstruct a mapping. + +14-Mar-1999 (Lars Duening) (3.2.6-dev.54) + - (interpret.c, efuns.c) Efuns lower_case(), upper_case(), and + capitalize() try to reuse the passed string if possible + (suggested by Sunblood). + - (interpret.c, func_spec, doc/efun/caller_stack) + New efun caller_stack() (suggested by TubMud). + +12-Mar-1999 (Lars Duening) + - (otable) Commented and ansified. + - (port.h, comm.c, simulate.c) __CYGWIN32__ replaced by __CYGWIN__. + (b-990204-4) + +12-Mar-1999 (Lars Duening) (3.2.6-dev.53) + - (object, interpret.c) Finished commenting this module. + - (func_spec, interpret.c, efuns) New efuns abs() (thanks, Holger!), + upper_case(), all_environment(). (f-990203-20, f-990217-1) + +11-Mar-1999 (Lars Duening) (3.2.6-dev.52) + - (comm, lex.c) Increased the size of the buffer for the hostname in + gethostname() from 20 to MAXHOSTNAMELEN+1 chars. The domainname + is now determined once at startup from the hostname, removing + the need for getdomainname() (which on some machines returned + the NIS domain instead of the DNS domain anyway) (thanks, Freaky!). + (p-990309-1,2). + - (configure, autoconf/configure.in, all machine.h) Added test and + define for . In return, the test for getdomainname + is gone. + - (interpret.c) F_CATCH/F_END_CATCH added the reserve to the eval_cost, + but not the assigned_eval_cost. This could lead to amazingly + high assigned_eval_cost afterwards. (thanks, Sunblood!) + - (func_spec, interpret.c) efun clonep() returns just an int. The + name of the blueprint can now be retrieved with the + efun blueprint(). + - (HISTORY) Change the format a bit. + - (efuns.{c,h}) Preliminary file holding all the new efuns. + - (func_spec, efuns) New efun make_shared_string() (adapted from + TubMud). + +10-Mar-1999 (Lars Duening) (3.2.6-dev.51) + - (object, dumpstat.c, interpret.c, port.h, simulate.c, exec.h) + Started commenting the object module, and adapted the other files. + - (doc/efun/*) Improved the formatting of some files. + - (prolang.y) Better error message if a local variable is declared + again. + - (mudlib/master.c) Forgot to change efun308() into set_environment(). + - (config.h) SUPPLY_PARSE_COMMAND is on again by default. + +07-Mar-1999 (Lars Duening) (3.2.6-dev.50) + - (filestat.h) Oops, some compiler really don't like spurious ' even + in inactive parts of the source. + +07-Mar-1999 (Lars Duening) (3.2.6-dev.49) + - (backend.c, swap.c) Added missing #include "random.h" statements. + - (parse.c) old_explode_string() was missing when only F_PROCESS_STRING, + but not SUPPLY_PARSE_COMMAND was defined. Oops. + - (filestat.h) Added #error statement in case somebody defines FILE_STAT. + - (config.h) SUPPLY_PARSE_COMMAND is off by default. + - (CHANGELOG) Corrected the entry for dev.46. + - (interpret.c) m_indices() was found to lack the code for checking the + mapping for destructed objects. Somehow it vanished from 3.2-dev.46. + - (prolang.y) Cleared a variable-shadowing warning. + - (closure.c, comm.c, gcollect.c, interpret, lex.c, make_func.y, + mapping.c, object.c, prolang.y, simulate.c, swap.c) + Added pragmas for Metrowerks compiler to handle unused + variables and intentional assignments in conditions. + - (hosts/be/Makefile) Now compiles on highest warning level. + - (interpret.h, instrs.h, exec.h, make_func.y) Broke a recursive + include loop. + +06-Mar-1999 (Lars Duening) (3.2.6-dev.48) + - (func_spec, interpret.c, doc/efun/load_object) + New efun load_object() to load blueprints. + - (func_spec, interpret.c simulate, doc/efun/clone_object) + Modified efun clone_object() to accept objects. (f-990305-1) + +06-Mar-1999 (Lars Duening) (3.2.6-dev.47) + - (simulate.c) With logging of compilations activated, if the + compilation of an object is aborted because an inherit is missing, + the driver logs 'needs inherit' instead of 'done' on stderr. + - (main.c, object, simulate) Extended the object structure with the + field 'load_name' which gives (in !compat with leading slash) + the filename from which the object resp. a clone's blueprint was + compiled. This field is used by the clonep() efun. + - (func_spec, interpret.c, doc/efun/clonep) New efun clonep() added. + I just don't know how to handle virtual object clones with it. + (f-990203-27, sort of) + - (main.c, hosts/be/Makefile) Added comments regarding OPCPROF. + - (array, interpret.c, parse.c) Since the old explode_string() is now + static in parse.c, it was renamed to old_explode_string(). This + allows to rename new_explode_string() in array.c to explode_string(). + +05-Mar-1999 (Lars Duening) (3.2.6-dev.46) + - (mapping, datatyps.h, interpret, array.c) Finished commenting the + mappings module. + - (parse, interpret.c) F_DESCRIBE was never implemented, so the stubs + are gone now, too. + - (func_spec, simulate, doc/set_environment) Renamed efun308() + to set_environment(). The old name is still available for now + (and I think Hyp was the first to propose the new name). (f-981229) + - (func_spec, interpret.c, doc/set_next_reset) + New efun set_next_reset(). (adapted from Morgengrauen) + +03-Mar-1999 (Lars Duening) (3.2.6-dev.45) + - (mapping, datatypes.h, array.c, main.c, interpret.c, object.c, swap.c) + More comments and cleanup of the the mapping code. + - (backend.c) No prompt is printed to interactive users if they are + already closing down. This can happen if the current command caused + the disconnection, but not destruction of the player object. + - (array, interpret.c) Applied Sunbloods optimisation of + subtract_array(), which improves the cases 'array - ({})' and + 'array - ({ x })' by avoiding copies and alist operations. (p-990303) + - (util/Makefile, util/xerq/Makefile) Cosmetics. + - (util/erq.c) Applied patches from TubMud, which also introduces two + new service types 'ERQ_ACCEPT' and 'ERQ_LOOKUP'. + +02-Mar-1999 (Lars Duening) (3.2.6-dev.44) + - (mapping, datatypes.h) More comments. + - (util/xerq) Added Brian Gersts 'x-erq' demon (formerly 'tw-erq') as + an alternative to Amylaar's original erq. So far it's a quick + and dirty adaption. Thanks, Brian! + - (main.c, simulate.c, gcollect.c) Removed the last FILE_STAT extra + code. + - (lotsa files): The following features are no longer optional resp. + available: (f-981229-01) + OLD_PREVIOUS_OBJECT_BEHAVIOUR: gone + OLD_EXPLODE_BEHAVIOUR: gone + FLOATS: always available + TRANSCENDENT_FUNCTIONS: always available + NO_XVARARGS: gone + MAPPINGS: always available + SUPPLY_PARSE_COMMAND is still there... for now. + +01-Mar-1999 (Lars Duening) + - (prolang.y) Undid most of the patch applied yesterday, because, as + Sunblood and Chameloid pointed out, removing duplicate virtual + inherits collides with p-990217 and results in sporadic losses + of inherited functions *sigh*. However, the bugfix itself + is ok and does stay. + +28-Feb-1999 (Lars Duening) (3.2.6-dev.43) + - (prolang.y) Implemented the patch for the initialisation of + virtually inherited variables (thanks, Sunblade!). (p-990227) + +28-Feb-1999 (Lars Duening) (3.2.6-dev.42) + - (main.c) '--options' didn't print absolute swap paths correctly. + - (dumpstat.c, object.h, interpret.c, simulate.c) The evalcosts are + now also counted per object (in the variables ticks and gigaticks), + and of course listed in the OBJ_DUMP and the debug_info(). (adapted + from Morgengrauen) + - (filestat.c, all config.h and Makefiles) Deactived the FILE_STAT + accounting, but left the filestat.h in place for now - it might + come in handy later. + - (prolang.y) Variables in variable-only objects are now properly + initialized by __INIT() (thanks, Sunblade!). + +24-Feb-1999 (Lars Duening) (3.2.6-dev.40) + - (random) New implementation using the Mersenne Twister. + +22-Feb-1999 (Lars Duening) (3.2.6-dev.39) + - (sprintf.c) Increased the size of the buffer for the string to be + created from 10KBytes to 64KBytes (suggested by Woody). + - (backend.c, swap.c) reset() is not called in objects which are swapped + out or which haven't been touched since the last reset(). Also, if + an object is swapped in after its due reset time, a new reset time + is set. (adapted from Morgengrauen) + - (prolang.y) Too big mapping aggregates generate a compile time error. + (adapted from Morgengrauen) + - (interpret.c) Illegal offsets in get_line_number() no longer crash + the driver during a tracedump, but 'just' generate a diagnostic. + (adapted from Morgengrauen) + - (comm.c, telnet.h) Added telnet options for X Display location and + authentification. (adapted from Morgengrauen) + +18-Feb-1999 (Lars Duening) + - (interpret.c) Bad types to [x..] ranges produce a meaningful error + message. + +17-Feb-1999 (Lars Duening) (3.2.6-dev.38) + - (interpret.c, prolang.y) Applied p-990217 from Sunblood (thanks!), + which fixes b-981201 (calls to virtually inherited function lose + track where the parents variables are) and b-981208-4 (redefinitions + of virtually inherited functions). As a sideeffect, "*":: may now + call the same function repeatedly if it is virtually inherited through + different parent lines. I don't like this behaviour, but right now + I don't grok the compiler well enough to change this. Consider it + a bug! + - (interpret.c) sizeof(mapping) checks the mapping for destructed + objects first (thanks, Holger!) (b-990217-2) + +16-Feb-1999 (Lars Duening) (3.2.6-dev.37) + - (be/Makefile) the generated executable is tagged with the proper + version number (using setversion). + - (interpret) sapply_int() and apply_low() take a flag argument, + allowing to override any protection by static/protected keywords. + This is used in apply_master_ob() to allow the master applies + to be static; the earlier solution of setting current_object + messed up the previous_object() relation (*doh*!), causing + security systems to malfunction. sapply() itself is now a mere + #define for sapply_int(). (b-981110-0) + +15-Feb-1999 (Lars Duening) (3.2.6-dev.36) + - (INSTALL) A few small changes (thanks, Patrick!). + - (my-rusage.h) Added an extra check for HPUX; I hope it uses the + correct definition of timeval now for RUSAGE_TIME (thanks, Gum!). + (b-990203-3) + - (prolang.y) Corrected wrap-around problem when programs larger + than 64K are compiled (thanks, Daniel!). + - (call_out.c, interpret.c) Whenever a callout on an efun closure occurs, + current_prog is set to NULL. Should an error occur, the dump_trace() + will recognize this value and not try to derefence it (what caused + the bugs p-990203-1 and b-990207 in the first place). The previous + fix to this problem didn't quite work because it ignored that + ob->prog might have been swapped out. However, should more places + crop up where current_prog has to be tested for NULL, introducing + a fake struct program for efun closures might be the better solution + in the long run (as suggested by p-990203-1, second patch). + - (interpret.c) Added new function push_valid_ob(object) which pushes + the given object onto the vm stack, unless the object is destructed + in which case the number 0 is put onto the stack. This function is + used in various places to protect apply_master_ob() against destructed + objects (esp. calls to privilege_violation(), heart_beat_error(), + valid_read() and valid_write()) (thanks, Sunblood!) (b-981226-0). + - (interpret.c) apply_master_ob() temporarily sets current_object to + the master object, allowing the master functions to be static. + +10-Feb-1999 (Lars Duening) (3.2.6-dev.35) + - (call_out.c) Callouts did not set up current_prog, this caused + the tracedump to crash should an error occur in a callout to + an efun closure (thanks, Sunblood and Logic!) (p-990203-1, + b-990207). + - (call_out.c) Callouts no longer confuse 'command_giver destructed + meanwhile' with 'no command_giver to begin with' (thanks, Sissi + and Tmm!) (b-990106-0, b-990204-0) + - (closure.c) Made #'++/#'-- work (thanks, Zwirch!) (b-990204-3). + - (comm.c) During logon, current_interactive is set to the + object itself (thanks, Daniel!) (p-990203-3). + - (comm.c) When doing I/O, no output is sent to destructed snoopers + (thanks, Zwirch!) (b-990204-2). + - (Makefile) Updated dependency generation for mkdepend 1.5. + - (interpret.c) terminal_colour: Fixed a memory leak of the stack + arguments and auxiliary strings - on Tubmud the leak was severe + enough to make the GC last several hours (thanks, Sunblood!) + (p-990203-0, b-990203-1) + - (interpret.c) If adding to an array caused it to hit the upper limit, + its memory was freed nevertheless. Subsequent accesses caused all + sorts of interesting effects (thanks, Daniel and Zora!) (p-990203-2, + b-990203-5). + - (interpret.c) terminal_colour() correctly wraps strings of one less + the wrap limit (thanks, Chameloid!) (b-990210). + - (interpret.c) A call_lambda() on a CLOSURE_IDENTIFIER makes sure + that the variable is swapped in (thanks, Sunblood and Matthew!) + (b-990203-0, b-990203-6). + - (func_spec, interpret.c) to_int(), to_object() and to_float() accept + their target data type as argument (thanks, Zora and Zwirch!) + (b-980922-0, f-980928-0). + - (prolang.y) Applied a patch fixing a potential crasher (thanks, Daniel!) + (p-990203-5). + - (sprintf.c) Added guards against values < 1.0 to the use of log10 + when estimating the number of digits to print (thanks, Chameloid!) + +12-Dec-1998 (Lars Duening) (3.2.6-dev.34) + - (make_func.y, Makefiles) The file efun_defs.c is written directly + my make_func, not just dumped to stdout. The generated lang.y + now bears a notice that the file is generated automatically. + - (mapping) First comments added. + +10-Dec-1998 (Lars Duening) -- Release 3.2.5 + - Froze 3.2.5-dev.33 for release. + +09-Dec-1998 (Lars Duening) (3.2.5-dev.32) + - (make_func.y, func_spec) Commented and ansified. + +08-Dec-1998 (Lars Duening) + - (lex.*) Commented and ansified. + - (comm.c) At the end of a session the driver does no longer + send 'Closing down' to the socket. + +07-Dec-1998 (Lars Duening) + - (simulate) New function check_no_parentdirs() checks a pathname + for parent dir specifications (e.g. '/../'). + - (sprintf) This is actually an old change, but I forgot to log + it at that time: increased the size of an internal buffer + used to print float numbers to prevent crashes with big floats. + Additionally the code tries to estimate and adjust the size of + the output before it prints the float, and tests for a buffer + overrun and aborts the driver with a fatal() if it happens + (b-980420). + +06-Dec-1998 (Lars Duening) (3.2.5-dev.29) + - (port.h) When compiling with the GNU compiler, _GNU_SOURCE is + defined. + - (swap.c) A seek error when trying to write a (new) block to + the swap file is no longer a fatal() error. + - (Makefile.in, util/Makefile) A normal make in util/ no longer + attempts to install the binaries. To do that, use the target + 'install' in util/ or 'install-utils' in the main directory. + +04-Dec-1998 (Lars Duening) + - (ed.c) Oops, had an embedded \0 character in a help text. + - (main.c) The version number printed on --version and --options + now distinguishes real releases and development versions. + - (simulate.c) legal_path() uses a refined test for '..'-directory + specifications, now being able to tell these apart from harmless + uses like '..file' or '...' (thanks, Fiona!). + +03-Dec-1998 (Lars Duening) (3.2.5-dev.28) + - (backend.c) f_regreplace(): reallocation-condition was 'space < 0', + instead of 'space <= 0' which could cause memory writes just one + byte beyond the allocated block (b-981202-2). + - (interpret.c) dump_trace() and get_line_number() lacked the handling + of ALIEN_LFUN_CLOSURE calls, signified by a 0-valued pc on the + control stack. This caused runtime errors in funcalls to + symbol_function()s to crash in the error handling. + +02-Dec-1998 (Lars Duening) (3.2.5-dev.27) + - (lotsa files) Replaced tab characters with spaces. + - (comm.c) Under Linux, a special handler is used to ignore SIGPIPEs, + since the provided SIG_IGN is just a one-shot handler (thanks, + Blackcat!). + +01-Dec-1998 (Lars Duening) (3.2.5-dev.26) + - (main.c, ed.c, port.h) Cosmetics. + - (simulate.c) Efun command() now returns 0 when the target object + or the current object are destructed. + Similar, the handling for a string H_MODIFY_COMMAND hook did + not check if the command_giver is destructed. If the gamedriver + was compiled with -DDEBUG, this caused a fatal error 'apply() + on destructed object'. + - (interpret.c) call_lambda() increments the refcount of lambda + closures while executing their code. This is important + for driver hook closures which may first destruct and then + reload the master. Without the refcounting, this would delete + the bytecode while it is executed (thanks, Sunblade!). + - (patchlevel.h) + Correcte the automatic generation of release dates. + +30-Nov-1998 (Lars Duening) + - (closure.c) Compensated a (propable) optimizer error for Linux/gcc. + See C_COMPILER_BUGS for details. + - (port.h) The replacement define for strrchr() was faulty. + +27-Nov-1998 (Lars Duening) (3.2.5-dev.25) + - (simulate.c) One line was lost in error(), messing up the + command_giver in a heart_beat error. + - (interpret.c) Experimented with the TubMud patch to mark + efun closures by clearing csp->prog. However, the driver + interprets this value as 'bottom of cs stack' and thus + gets confused in F_RETURN and propably other places, too. + +25-Nov-1998 (Lars Duening) (3.2.5-dev.24) + - (comm.*) Commented and converted to standard C. Also removed + the portal fragments - they didn't work anyway. + - (call_out.*, dumpstat.*, ed.*, gcollect.*) Commented and converted + to standard C. Also improved a few of the helpfiles of the + editor. + - (my-rusage.h, port.*, comm.*, hosts/be/be.h) Resolved some minor + issues under BeOS/x86. + - (main.c) Fixed a small problem in the option parsing. + - (object) The program renumber moved in here from gcollect. + +21-Nov-1998 (Lars Duening) + - (hosts/fcrypt) Removed. + - (comm.c) Renamed from comm1.c + +20-Nov-1998 (Lars Duening) + - (lotsa files) MSDOS support removed. Parts of the driver wouldn't + compile under MSDOS anyway. However, the support for the MSDOS + filesystem is still there. + +19-Nov-1998 (Lars Duening) + - (comm1.c, config.h) The ERQ send buffer size is now configurable + in config.h, too. Also, the default size is now 1KByte for + better throughput. + - (lex.c, main.c) New defines __ERQ_MAX_SEND__ and __ERQ_MAX_REPLY__ if + if compiler is defined for ERQ support. + Both changes are taken from the x-erq distribution of Brian Gerst. + - (driver.h) If CATCH_UDP_PORT is not defined, UDP_SEND is made + undefined, too. + +18-Nov-1998 (Lars Duening) + - (lex.c) Compat mode drivers define __COMPAT_MODE__ (meant to + replace COMPAT_FLAG eventually); native mode drivers define + __NATIVE_MODE__. Similar, a driver using euids defines __EUIDS__. + - (access_check.c) Sometimes the "Can't stat ACCESS_FILE" message + was generated for no reason. + - (mudlib/test_master.c) Extended the master to use normal + add_actions(). + +15-Nov-1998 (Lars Duening) + - (comm1, sent.h, simulate) Began ansification of comm1.c . + Moved the definition of the input_to structure from sent.h + to comm1.c + - (Copyright, CREDITS) Some cleanup. + +11-Nov-1998 (Lars Duening) + - (smalloc.c) Ups, srealloc() must not be static when compiling + with SBRK_OK, as it implements the realloc() function then. + - (interpret.c, simulate.c) Added some #ifdef DEBUG...#endif + statements where appropriate. + - (gcollect) Variable time_last_gc was not visible when compiling + with MALLOC_sysmalloc. + +10-Nov-1998 (Lars Duening) + - (interpret.c, my-rusage.h, port.h) A few changes to accomodate + SunOS4. + - (lex.c) Only regular files can be used as include files; before + it was possible to include directories. + +09-Nov-1998 (Lars Duening) + - (lex.c) Replace the alloca()d buffers in _expand_define() with + once-xalloc()ed ones. In DEBUG mode, recursive calls to + _expand_define() are caught. + - (lex.c, patchlevel.h) Non-release versions have a version number + of the form '3.2.5-dev.16'. + - (interpret.c) Corrected an off-by-one error in the stack handling + of mapping_contains() (b-980922-1). + +08-Nov-1998 (Lars Duening) + - (my-alloca.h) If alloca.c is used, the system alloca files + are not included - in most cases they define alloca() to + something which is not covered by alloca.c, kind of spoiling + the desired effect. + - (lex.c) If alloca.c is used, a call to alloca(0) is made after + each use of _expand_define(), to keep the memory usage low. + - (hosts/be/machine.h, .../Makefile) + alloca.c is no longer used. + +04-Nov-1998 (Lars Duening) + - (access_check.c) If the ACCESS_FILE can't be read, an error + message is printed to stderr. + - (comm1.c) Sorted out the BeOS blocking socket problem. + +03-Nov-1998 (Lars Duening) + - (func_spec, interpret.c, prolang.y) F_SWAP and F_BREAK_POINT + are compiled in only when the efuns are actually defined. + By default, they aren't. + - (simulate.c) Removed the remaining debug outputs. + - (closure.c) The branch rewriting code, responsible for changing + BRANCHes into LBRANCHes when a closure grows big in size, did + not correct 16-Bit offsets for the new target addresses of new + code. The applied fix solves the problem for UNItopia (using <> + as #include specifier), but might not be sufficient for all + cases. Therefore, two DEBUG: messages remain to warn if this + feature is used. + - (hosts/be/*) Adapted for R4/x86. + - (*.c) Removed most of the 'Possibly unwanted assigment' warnings. + +02-Nov-1998 (Lars Duening) + - (simulate) Corrected bugs in make_name_sane() and load_object(). + The debug outputs are still in place for now (b-981029-0). + +01-Nov-1998 (Lars Duening) + - (hosts/be/Makefile) Adapted to BeOS R4. + - (simulate) The functions find_object() and find_object2() are + merged into one function lookfor_object(). For the old calls + the macros get_object() and find_object() are available + (note the subtle shift in naming!). This reduces the number + of calls to make_name_sane(). + The function load_object() is no longer exported. + - (simulate) Rewrote the load_object() to use a loop for the + iterative compilation process instead of tail recursion. + - (patchlevel.h) Automatized the versioning to use PRCS keywords. + - (comm1.c) After processing a received UDP packet, the evalution + costs are cleared (thanks, Tucita!) (p-981027-0). + - (main.c) The argument parser printed the wrong option in + one error message (b-980925-1). + - (config.h, hosts/*/config.h) Increased the limit for bit strings + to 6144 Bits (using 1KB memory). + - (interpret.c) Out-of-bounds error message for the bit efuns printed + garbage instead of the faulty bitnumber (b-980925-0). + +09-Oct-1998 (Lars Duening) + - (array.c, backend.c) Added some checks if memory allocations + actually succeed. + +23-Sep-1998 (Lars Duening) -- Release 3.2.4 + - (simulate.c) load_object() The code cleaning up the filename did + not check if an object with the 'sane' filename already exists. + This lead to duplicate entries in the object table and thus + fatal driver aborts. Furthermore, the code carelessly modified + the string passed, causing disruptions in the shared string + table. + - (doc/efun/terminal_colour, doc/efun/query_mud_port) added. + +22-Sep-1998 (Lars Duening) + - (filestat.*) Oops, the one statistic necessary to detect multiple + uses of a file in one command was missing. Corrected that. + +21-Sep-1998 (Lars Duening) -- Release 3.2.3 + - (array.c) Changed order_alist() to use standard conformant pointer + arithmetics. + - (backend) Added the statistic 'total_player_commands'. + - (filestat.*) Statistics module counting the number and type of + file usages (read, write, delete, read for compilation, read + for inclusion, read for restore_object, write for save_object). + The statistic is enabled by defining FILE_STAT in config.h. + The statistic is appended to the file /FILESTAT when the + special command 'status files' is given. + - (access_check.c, backend.c, comm1.c, dumpstat.c, main.c, gcollect.c, + lex.c, main.c, object.c, simulate.c, various Makefiles) + Adapted for filestat. + - (main.c) Beautified the --options output. + - (swap.*, main.c) New commandline option '--swap-compact' to put + the swapper in the "compact mode". In this mode, free space in + the swapfile is reused immediately; in contrast to the default + mode in which the reuse is determined by low/high watermarks. + +20-Sep-1998 (Lars Duening) + - (interpret.c) F_MAPPING_CONTAINS returned destructed objects since + it didn't check the results of get_map_lvalue() properly (thanks, + Fiona and Zora!). + - (backend.c) Reallocation of the heartbeat array now conforms more + to the standard. + +14-Sep-1998 (Lars Duening) -- Release 3.2.2 + - (array.c) One statement was at the wrong place in order_alist(), + causing a malfunction in explode(). + - (closure.c) store_case_labels(): another crasher removed, this + time two loops assumed that the variables local to their body + keep their values between two iterations. + - (interpret.c) As in closure.c, loop body variables are moved + outside their loops if they are meant to be persistant. + - (interpret.c) A misplaced cast broke sscanf(). + - (backend.*, hash.*) Beautified and commented. + - (main.*) Marked the boolean commandline parameters as such. + The gamedriver announces itself as 'LDMud'. + - (patchlevel.h) Changed version number from 03.02.1@ + to 3.2. (note the missing leading zeroes!). + - (CHANGELOG) renamed from CHANGELOG.OSB. + - (HISTORY) new file for a user-oriented summary of the changes. + +10-Sep-1998 (Lars Duening) + - (alloca.c) Beautified. + - (simulate.c) load_object: Extended the sanity checks for filenames + a bit: multiple '/' are collapsed into just one (thanks for the + idea, Zora!). + +05-Sep-1998 (Lars Duening) + - (main.c) Oops, small typo in options() (thanks, Woody!). + And the short command options are now case sensitive as they + should be. + - (closure.c) Omission of a seemlingly harmless cast caused + the driver to core when compiling a switch. Unfortunately, my + simple test_master.c didn't catch this. *sigh* We need a proper + testsuite... + - (ed.c, interpret.c, lex.c, mapping.c, parse.c, prolang.y, sprintf.c) + Checked for and corrected similar casts. + - (swap.c) Re-added Macbeth's watermark handling for the reusage + of free-space, though for now it's deactivated . + - (*.c, *.y) Added some parentheses as suggested by gcc to make the + code clearer. + - (comm.*, interpret.c) Replace the define MESSAGE_FLUSH by the + variable message_flush, keeping gcc happier. + - (prolang.y) Bugfix from mubo@silicondream: If a program defined + __INIT() but didn't implement it, later inheriting of this + program crashed the driver. + - (port.h, interpret.*, prolang.*, stralloc.*) New macro LOCAL_INLINE + for compilers which can inline a function locally while at the + same time offering it for external linkage. + +02-Sep-1998 (Lars Duening) + - (array.*) Commented and converted function defs to STD-C style. + - (array.c) Small improvements to unique_array() (boy, that code + is really old!). + - (main.c) Some warnings about unused variables prevented. + +18-Aug-1998 (Lars Duening) + - (datatypes.h) New include file declaring all commonly used + datatypes of the virtual machine (svalue, vector, etc). + interpret.h keeps the interpreter related declarations only. + This also unclutters the struct svalue/smalloc.h relationship + a bit. + +17-Aug-1998 (Lars Duening) + - (main.c) --options prints all the compilation options, --version + just the version. --help shortened to just list all commandline + options, --longhelp prints an elaborate description of these. + +16-Aug-1998 (Lars Duening) + - (access_check.*) Commented, converted function defs to ansi style. + - The old access control using the ACCESS.DENY file is gone. + - (patchlevel.h) The GAME_VERSION define moved from config.h into here. + - (main.*) Commented, converted function defs to ansi style. + Rewrote the commandline argument parser. Most options are now + available in a short and long version; --version prints all + sorts of compilation options as well. New option --help. + - (driver/invocation) New documentation: driver invocation. + +13-Aug-1998 (Lars Duening) + - Updated the hosts/*/config.h files. + - (hosts/be/be.h) The host dependent init makes sure that the erq + is not started automatically, even if the option to do so is + set in config.h + - (my-rusage.h) new, a wrapper for the rusage related stuff. + - (hosts/unix.h) received all the Unix specific portability + definitions from driver.h (this includes the cygnus win32 + environment). + (port.h) received the remaining host dependent definitions, so that + (driver.h) can be dedicated to provide global definitions. + - (port.*, random.*) Commented, converted function defs to ansi style. + +12-Aug-1998 (Lars Duening) + - (driver.h) Created from the old lint.h, it defines some macros and + includes config.h, machine.h and port.h. The system-dependent stuff + will move into port.h eventually. All sources changed to use + driver.h instead of lint.h. + - (my-alloca.h) new, a wrapper for . + - (cruft/) New directory for code snippets which are no longer + useful, but interesting enough to keep around. + - (hosts/be/Makefile) New target 'dependall' updates the + dependencies in Makefile, Makefile.in, and the Makefiles + for Be, Amiga and OS/2. + +11-Aug-1998 (Lars Duening) + - Compiled the sources with gcc on a high warning level and + removed as many warnings as possible. Added some patches + for compiling under Win32 with Cygwin32. + +09-Aug-1998 (Lars Duening) + - 'Modularized' the sources: the exports of every .c file are + listed in an associated .h file, and only there. The liberal + sprinkling of 'extern' statements is gone. + +10-Jul-1998 (Lars Duening) + - Release 3.2.1@141-osb.16 + - (prolang.y) Fixed a pointer mixup which caused '"*"::' to end + in an endless loop. Bugfix provided by Daniel von Dincklage + ( aka Sunblade@sd.mud.de) + - Updated the BeOS support: small tweaks to machine.h, the Makefile + now supports cross-compilation, a small hack in comm1.c. + +04-Jul-1998 (Lars Duening) + - (prolang.y) In case of a 'Program too large' compilation error, + random memory was freed due to an uninitalized variable. + - (mudlib/test_master.c) Added this minimal master for simple + driver tests. + +17-May-1998 (Lars Duening) + - Release 3.2.1@141-osb.14 + - (interpret.c) The apply cache is initialized on driver startup, not + statically at compilation time. This allows compilers with less + capable preprocessors (line length limitations) to use big caches + as well. + +16-May-1998 and before (Lars Duening) + - added rxcache.[ch]: cache for compiled regular expression patterns. + - added support for BeOS. + - (backend.c) Automatic garbage collections are kept at least 5 minutes + apart. Every garbage collection is logged on stdout. + - (backend.c) Variables are swapped independantly from program code. + - (comm1.c, main.c) Multiple login ports may be used in parallel. The + port numbers are given on the commandline, efun query_mud_port() + was extended to return the appropriate port number. + - (interpret.c) MudOS-efun terminal_colour() added by Mica. + - (interpret.c) this_object() in destructed objects does not print a + diagnostic anymore. + - (lex.c) more informative diagnostics about defbuf allocations. Too + big defbufs are deallocated again to conserve memory. + - (main.c) reallocation of system reserves prints diagnostics. + - (regexp.ch) NSUBEXP may take values different from 10 (OSB uses 50). + - (swap.c) Free space is reused immediately. + - (stralloc.ch, interpret.c) All the names of the lfuns applied by + the driver are stored in the shared string table on startup. + Together with some modifications to the apply cache for faster + processing of applys on shared strings, this should make a mud + a wee bit faster. Also added some comments in these areas (with + no guarantee for correctness!). + - (simulate.c) 'status tables' prints the number of cache hits both + absolute and as percentage. diff --git a/COPYING.LIB b/COPYING.LIB new file mode 100644 index 00000000..bbe3fe19 --- /dev/null +++ b/COPYING.LIB @@ -0,0 +1,481 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/COPYRIGHT b/COPYRIGHT new file mode 100644 index 00000000..3126a50f --- /dev/null +++ b/COPYRIGHT @@ -0,0 +1,57 @@ +LDMud, a LPmud gamedriver. +Copyright 1997-2004 by Lars Duening. + +LDMud is based on LPmud, which is +Copyright 1989-1991 by Lars Pensj|, and, starting with version 3.1.2, +Copyright 1991-1997 by Joern Rennecke. + +Source code herein refers to the source code, and any executables +created from the same source code. + +All rights reserved. Permission is granted to use, extend and modify the +source code provided subject to the restriction that the source code may +not be used in any way whatsoever for monetary gain. + + ------------------------------------------------------------------------ + +LDMud contains contributions of many volunteers as listed in the file CREDITS. +Of these, the following packages are subject of their own copyright when +used outside the context of this gamedriver; please refer to the appropriate +files for details. + +The regexp package is based on the code written by Henry Spencer. + +The portable crypt() implementation is Copyright by Eric Young. + +The smalloc allocator was written by Sean T. Barrett and put into the +public domain. + +The 'ed' editor (with the exception of the indentation code) is Copyright +by Brian Beattie, Kees Bot and others. + +The non-corrupting indentation code for the 'ed' editor was written and +contributed by Felix A. Croes () from his DGD gamedriver. + +The sprintf() efun was written by Sean A. Reith and put into the public +domain. + +All code taken from the MudOS driver is Copyright by Tim Hollebeek and +the original authors. Use for other purposes than LPmud drivers or under +licenses significantly different from the original LPmud license needs +explicite permission. + +The random() efun is implemented using the Mersenne Twister generator which is +Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, and subject +to a BSD-style license. The implementation is the faster implementation based +on Shawn Cokus and Matthew Belle's improvements. See random.c for the full +text of the license. + +The xerq demon is Copyright (C) 1995 by Brian Gerst. Use of the source +code is subject to the restriction that it must not be used for monetary +gain. + +The MD5 message digest algorithm is Copyright (C) 1991-2, RSA Data Security, +Inc. + +The lpc-mode.el for EMACS is Copyright (C) 2002 Vivek Dasmohapatra +, and distributed under the GPL. diff --git a/CREDITS b/CREDITS new file mode 100644 index 00000000..8a7f8d15 --- /dev/null +++ b/CREDITS @@ -0,0 +1,262 @@ +The program was originally written by + +Lars Pensj|, April 1989 (lars@cd.chalmers.se (no longer valid)). + +Lars gives the following credit: + + The regexp package was made by Henry Spencer. + + The ed package was not done by me. See the file ed.c for information. + + Bit manipulations was implemented by pell@lysator.liu.se who also found + several bugs that had eluded me for months. + + Valuable help and hints from: Mark Nagel, James Seidman, Moonchilde and more. + + Roland Dunkerley III fixed for-loops, do-while and the operators ++ and --. + + Sean T Barrett made smalloc.c. + + Lennart Augustsson convinced me to implement a compiler for a virtual + stack machine. He also implemented the built-in preprocessor. + + John S. Price found and fixed many bugs. + + The shadow idea was "forwarded" to me by John S. Price from Team Cthulhu + (Bill Burdick, Roy Riggs, Mitch Adler). + + Michael Malone, Michael O'Reilly, Klaus Rennecke, J|rn Rennecke and + Germano Caronni found and fixed a large amount of bugs. + + Petri Wessman fixed changes for SCO unix and AIX. + + ----------------------------------------------------------------------------- + +Joern Rennecke ( amylaar@cs.tu-berlin.de ) gives this credit: + + The non-corrupting indentation code for ed was written by Felix A. Croes, + aka Dworkin () and originates from his DGD. + + Mud-sprintf() is from Lynscar (Sean A Reith, and + was donated into the Public Domain. + + The alist based mapping implementation was supplied by Dworkin. + + The idea for query_actions and an implementation that has been partially used + is from Peter Eriksson (aka lpd) pen@lysator.liu.se + + The port to Amiga was done by Mateese ( Lars Duening ) + + The udp connectivity is from the CD driver, and was fitted in by deepthought. + + Demos, Freaky, Hurl, Hyp, Mateese, Pepel and Jof did a lot of alpha + testing. + + Reimer Behrends located a lot of bugs. He also supplied a portable macro to + test numbers for having but a single bit set, a mergesort based + sort_array() and variadic function support. + + get_object_actions() was supplied by herp. + + Marcus Meissner found and fixed many bugs. + + Carl White, Mark (ec179@city.ac.uk), Archimedes (Robert Fuller), Eric Blade, + Mitchell Brandsma, Sam Bobroff, Jim Cogbill, Ben Fennema, + Sorva (Ed Zielinski), Loke@Wonderland (Solem), Claus S. Jensen, Nils Magnus, + samo@MorgenGrauen, Frobozz (Bryan Schuler), Sique@Nightfall, APJ, + Deathknight, Tero Jyri Michael Pelander (tpeland@utu.fi), + Willem van der Oord (willem@dcr.net), Hate@MorgenGrauen, + Bob Farmer, Randor@EoP, Trevor Phillips, Robert M. Zigweid, Inspiral, + Brian Gerst, Rasmus H. Hansen, Demodian (John Kurtz), William J. Burton, + Patrick Li, Niilo Paasivirta, Frank Stolze, Penelope@Avalon, + Nathan@Unholy Lands, mubo@SiliconDream, Sunblood@Tubmud, Alfe@Tubmud, + Tatu Saloranta, Chameloid@Tubmud and Martin Brenner (deepthought) reported bugs. + + Foslay did the OS/2 port. + + Ray Gilbert originally did the MSDOS port, which was modified later by + Rasmus Hellbug Hansen. + + Marcus Meissner contributed regreplace(). + + Slider@Tubmud supplied GnuWin32 patches. + + ----------------------------------------------------------------------------- + +Lars Duening thanks: + + - Dana Durkee and the magnificient Wessex for enhancing my life. + - the citizens of One Step Beyond, PK-Mud and UNItopia for enduring my + driver experiments. + - Malcom Tester (malcom.tester@comcast.net) for providing me with access to + a Solaris system for testing. + - Elric (elric@lpmud.com) for providing me with access to + a FreeBSD system for testing. + - Blackcat (?) for providing me with access to a Linux system for testing. + - Freaky for providing me with access to an Irix system for testing, numerous + bug reports, and lots of patience when new versions crashed even faster + than the old ones. + - Kees Leune for providing me with access to a Linux/Sparc system for + testing. + - Stefan Petri and contributors for the extensive documentation of the + Amylaar driver (see also doc/README). + - the MudOS programmers for the efun terminal_colour() and Michael Schaefer + for adapting it for LDMud. + - Martin Brenner: initial multi-port implementation, inetd compatibility + code. + - Brian Gerst (bgerst@quark.vpplus.com) for the xerq daemon. + - Reinhard Pfau (Reinhard.Pfau@unix-ag.org, Mubo@SiliconDream) brought + the autoconf mechanism up to date. + - Ron Koerner (ron.koerner@gmx.de, Righ@FinalFrontier) provided the + initial implementation of inline closures modelled after MudOS' syntax. + - Uwe (uwe@6bone.informatik.uni-leipzig.de) provided the basic IPv6 support. + - Mark Daniel Reidel (Karm@Nightfall) did the first implementation of + the mySQL efuns. + - Dennis VanHoey (devanhoe@usol.com) did the compiling and testing for the + Darwin port. + - Bart van Driessche (bart@multi.franken.de, Hunter@FinalFrontier) did the + new OS/2 port. + - Menaures added the tab character conversion to the editor, and gleefully + found new ways to crash the driver. + - Acius donated the LPC implementation of the A* pathfinding algorithm. + - for bug reports, critics, fixes, patches and other support: + Acius (acius@bigfoot.com) + Alex@TubMud (at16@st-andrews.ac.uk) + Alexander Fetke (alfebtcd@cs.tu-berlin.de, Alfe@Tubmud) + Alexander Dobrinescu (ad@artifacts.de, Lev@FinalFrontier) + Anders Strandloev Elkjaer (ase@cs.auc.dk) + Andre Meiske (guandalug@magellan.tat.physik.uni-tuebingen.de) + Andreas Grammlich (andreas.grammlich@prepress.de, Gum@Wunderland) + Andre Grosse (ag17@irz.inf.tu-dresden.de, Patryn@Morgengrauen) + Andreas Fischer (andreas.fischer@physik.tu-chemnitz.de) + Andreas Klauer (menaures@metamorpher.de, Menaures@Unitopia) + Andreas Weller (aw6@informatik.uni-ulm.de, Zwirch@Carledon) + Andres Cvitkovich (ac@twig.mond.at, ac@zwerg.at, Woody@Silberland) + Andrew Weisz (elarke01@snet.net) + Andy Zeneski (jaz@zsolv.com) + Arne @ Elridion + Athanasia Steele (azurite@mail1.nai.net) + Baba@Avalon + Bastian Hoyer (hoyer@wisc.de, dafire@dafire.de) + Ben Fennema (bfennema@ix.netcom.com) + Bertram Felgenhauer (bf3@irz.inf.uni-dresden.de, Fuchur@Wunderland) + Bill Andrulonis (bill.andrulonis@citrix.com, Bofin@Realmsmud) + Blackcat@PK-Mud (amuelle1@htwm.de) + Brandon (pothole@darkspyre.quad.net) + Brandon Mathis (brandon.mathis@medsolutions.com) + Bruce Mitchell (mitchell@manly.delconet.com, Klahn@Manly Mud) + Carlo von Loesch (cvl@symlynX.com, lynx@high.impact.pages.de) + Casey Zacek (cz@netspire.net, zippo@eotl) + Christian "Leonidas" Becker (cbecker@informatik.hu-berlin.de) + Christian Kirschbaum (chrissy@cs.tu-berlin.de, Chameloid@Tubmud) + Christian Mudra (c_mudra@informatik.uni-kl.de, Coogan@Tubmud) + Christian Welzel (Sir_Gawain@gmx.de, Gawain@Regenbogen) + Collin Baillie (sanac@optushome.com.au) + Craig Venz (Craig Venz@citrix.com, Kilan@Realmsmud) + croft@UNItopia.rus.uni-stuttgart.de + Dale "Elric" Perkins (dale_perkins@mac.com, dale@lpmud.com) + Daniel von Dincklage (daniel@ozet.de, Sunblade@SiliconDream), + Daniel Fischer (dfischer@gmx.de, Dan@Gueldenland) + Daniel Sloan (sloand@alphalink.com.au) + Daryth Kendrickson (stavros@deadofnight.com) + David Gibbs (ishara@btinternet.com) + David 'Greyelk' Gibby (oop_apprentice@yahoo.com) + Dennis VanHoey (dvanhoe@usol.com) + Dominik Zanettin (zhan@opossum.htu.tuwien.ac.at, Zhan@Beutelland) + Enrico Bauermeister (ebauermeister@t-online.de, Enrico@FinalFrontier) + Eivind (ekj@ekj.vestdata.no) + Erik Meusel (emeusel@prinz-atm.CS.Uni-Magdeburg.De) + Fantom (Fantom@Tharsis-Gate.org) + Fini Jastrow (Fiona@Wunderland, ujastrow@mail.desy.de) + Florian Heinz (ctx@amail.dereference.de) + Frank Kirschner (freaky@unitopia.uni-stuttgart.de) + Frank Stolze (fstolze@iName.com) + Frank Syse (syseworks@mac.com) + Gerhard Schmidt (estartu@augusta.de) + Gimli@Unitopa (gimli@schlumpf.net) + "Gnomi" (gnomi@UNItopia.rus.uni-stuttgart.de) + Gunnar Kreitz (gunnark@chello.se) + Heiko Kopp (hkopp@informatik.uni-rostock.de, bardioc@bardioc.com, + Bardioc@Evermore) + Henk Stokhorst (Tha@wxs.nl) + Holger Kremss (jur94ewp@studserv.uni-leipzig.de, Holger@web.de, + Holger@Wunderland) + Jason Hitt (jhitt25@swbell.net) + Joern Rennecke (amylaar@cygnus.co.uk) + Jose Manuel Roman (roman@wol.es, Theuzifan uzi@simauria.upv.es) + Joseph Graham (randalar@earthlink.net) + Josh Rollyson (jrollyson@sosdg.org) + Juergen Weickert (Sissi@UNItopia) + Karl N. Matthias (karmat@matthias.org) + Kathrin Paschen (paschen@ira.uka.de) + Kees Leune (c.j.leune@kub.nl) + Kirnan@Avalon + Krystal-Anne Rubenstein (punkette@hotmail.com) + Largo@Wunderland (emeusel@csmd.cs.uni-magdeburg.de) + Lasse Fuglsang Pedersen (volmer@qeep.dk, Zordiac@DeeperTrouble2) + Lee Salzman (lee.salzman@lvdi.net) + Logic (logic@logic.net) + "Mammi" (mammi@unitopia.uni-stuttgart.de) + Manu Mäki (mtmaki@pultti.turkuai.fi, Cendor@Winterkill) + Mark Daniel Reidel (Karm@Nightfall, + reidelm@rbg.informatik.tu-darmstadt.de) + Markus Peter (warp@spin.de, warp@hip.spin.de) + Martin (mandragon@morgengrauen) + Mat@Maethos + Mats Carlberg (matca@lysator.liu.se) + Matthew Julius (julius.2@wright.edu) + Michael Fedrowitz (mfedrowi@ix.urz.uni-heidelberg.de, + Michael_Fedrowiz@gmx.net, Rhodry@ForgottenDreams) + Michael Sporn (sporn@mathematik.hu-berlin.de, sunblood@tubmud) + Mike Conley (mpc@sgi.net, Tamarindo@Sovereign) + mudder@Furtual.ORG + "Nathan@Unholy Lands" (mud@pc181.iaee.tuwien.ac.at) + Neil McBride (neil@castinian.org) + Nepomuck@UNItopia + Nick Derewianka (nickd@e-media.com.au) + Nico Ehemann (n.ehemann@wzl.rwth-aachen.de) + Niels Boehm (bohmmrwc@minet.uni-jena.de, Mariko@Regenbogen) + Oskar Linde (d98-oli@nada.kth.se) + Parsec + Patrick May (patrick.may@cedelgroup.com) + Paul Apgar (tiresius@usa.net, tiresius@Cosmos) + Rainer Doerntge (rainer.doerntge@dlh.de) + Rajko Albrecht (ral@alwins-word.de, Alwin@Avalon) + Ralph (ralphi@vkr.k-net.dk) + Ralph Zitz (RZ@zitz.dk, Nostradamus@OSB) + Reimer Behrends (Macbeth@Tubmud) + Reinhard Pfau (reinhard@netlab1.hrz.uni-siegen.de, mubo@SiliconDream), + Reinhard Vicinus (vicinus@rhrk.uni-kl.de, Risky@Unitopia) + Robb Townsend (meecham@infonline.net) + Robert Forshaw (postmaster@rbf.org.uk) + Robert Reither (mud@klein.htu.tuwien.ac.at, Nathan@Unholy.Lands) + Rodney Quaye (sark@oberon.krans.com) + Ron Dawson (rondawson@syd.eastlink.ca, rdawson@cgc.ns.ca, Caper@PixieMud) + Sebastian Huss (huss@informatik.hu-berlin.de, baba@avalon) + Slava "DieHARD" Ignatjev (root@impar.com, slava@intersfera.lt) + Sieni (sampsa@netsonic.fi) + Simon Fischer (firebat@redcrown.de) + Stefan Budweiser (Stefan.Budweiser@compaq.com) + Stefan Riemer (stefan.riemer@bauing.uni-weimar.de, Peng@FinalFrontier) + Stephan Lichtenhagen (lichti@amethyst.chemie.uni-dortmund.de, + stephan@lichtenhagen.de, Tiamak@Morgengrauen) + Steve Goucher (su2996@eclipse.co.uk) + Steve Willoughby (steve@alchemy.com, Ragnarok) + Tatu P. Saloranta (doomdark@cc.hut.fi) + Terry Penn (terry@simaril.net) + TheFinn (thefinn@ar.com.au) + Thomas Feldmeier (tfeldmei@student.informatik.uni-ulm.de, Zora@Carledon, + zora@alpha.universalware.de) + Thorsten Klose (Thorsten.Klose@infineon.com, Avatar@avalon) + Tiberian@Unitopia + Tmm@UNItopia? (Tmm@gmx.de) + Tobias Josefowitz (tobij@goodadvice.pages.de) + Tomas (Vandergnome@aol.com) + Tomi Valkeinen (tomi.valkeinen@taikatech.com, Tomba@Batmud) + Tucita@UNItopia + Urv (urv@hispeed.ch) + Volker Behr (Sorcerer@AbendDaemmerung, vrbehr@cip.physik.uni-wuerzburg.de) + Wayne Woods (w.woods@optusnet.com.au) + Willem van der Oort (willem@dcr.net) + Wolf Dieter Dallinger (wolf.dieter@dallinger.de) + Zonk@FinalFrontier (zonk@finalfrontier.mud.de, rueschi@berit-broese.de) diff --git a/HISTORY b/HISTORY new file mode 100644 index 00000000..6dd71fea --- /dev/null +++ b/HISTORY @@ -0,0 +1,1329 @@ +This file lists all changes to the game driver which have a visible +impact on its behaviour both towards the mudlib as well as towards +the host system. + +For a detailed list of all changes see the file CHANGELOG. + +15-May-2005 (Lars Duening) -- upcoming Release 3.2.12 + + - Changed efuns: + + - Corrected efuns: + + call_out(), input_to(): Local references are no longer + accepted as extra arguments. + + restore_value(): Restoring one-character operator closures + in arrays works again. + + - New efuns: + + - Master Object: + + runtime_error(), heart_beat_error(): A new argument 'caught' + signals if the error is caught or not. + + - Fixed Crashers: + + - Language: + + - Runtime: + + - Other Changes: + + +19-Mar-2005 (Lars Duening) -- Release 3.2.11 + + - Changed efuns: + + db_*(): mySQL efuns trigger a privilege violation ("mysql", ""). + + get_dir(): New flags GETDIR_ACCESS and GETDIR_MODES to return + the file access times and file modes. + + input_to(): New flag INPUT_NO_TELNET to modify the INPUT_CHARMODE + behaviour. + + input_to(): New flag INPUT_APPEND to queue input_to()s. + + tell_object(): The efun can now take an array as second + argument, and then calls catch_msg() in the target. + + present(): The argument form (str, n) allows for ids with embedded + numbers. + + shutdown(): Added an argument to set the process exit code. + + to_int(): The base prefixes '0x', '0o' and '0b' are supported. + + - Corrected efuns: + + deep_copy(): Deep-copying mappings with shared arrays as keys + could corrupt memory. + + net_connect(): On multi-homed machines, the created socket + is bound to the hostname given at program start. + + save_object(): Matching the documentation, the efun really removes + a trailing '.c' from the filename. + + save_{value, object}(), restore_{value, object}(): Some operator + closures could not be saved and restored. + + - New efuns: + + tls_query_connection_state(), tls_query_connection_info(), + tls_init_connection(), tls_deinit_connection(), tls_error(), + tls_available(), tls_check_certificate(): + Optional: Support for TLS connections. + + - Master Object: + + - Fixed Crashers: + + A shadow executing remove_action(1, shadowee). + + A too-large allocation (like in " "*MAX_INT) no longer crashes the + mud unless done in SYSTEM allocation mode. + + Allocating an array enough elements to exceed the internal numeric + limits. + + Warnings printed during the generation of a closure crashed the + driver. + + The traceback generation was limited by the array limits, and thus + could throw an error again. + + to_array('symbol) caused a crash. + + An error in save_{object, value}() followed by a GC left + behind an invalid pointer. + + Error while loading an object with a too-long filename. + + Restoring non-existing (simul-)efun closures created illegal + closure values. + + Specifying a fieldsize or precision beyond the numerical limits + in sprintf()/printf(). + + Indexing a 0-width mapping yielded invalid values. + + - Language: + + The macros __FLOAT_MIN__ and __FLOAT_MAX__ gave a too-small range. + + New pragma (no_)warn_function_inconsistent to control the handling + of function redefinitions which differ in return or argument types. + + Implemented closures explicitely referencing inherited functions + ("#'super::fun"). + + - Runtime: + + Closures now work correctly when used as mapping keys. + + The tracedepth wasn't calculated correctly. + + A 'Command too long' error now also prints the beginning of the + offending command as debugging aid. + + Corrected a number of memory leaks in runtime errors. + + Corrected a memory leak in MCCP. + + An error during a call-out causes all pending call-outs for the + same user in the same cycle to be re-scheduled to the next cycle. + + If an ERQ callback accepts an array, the numbers in the array + are all positive in the range 0..255. + + Float variables without an initializer are now properly initialized + to float-0 instead of number-0. + + Calls from destructed objects to other objects (including simul-efun + calls) elicit a warning. + + The garbage collection now zeroes out closures found to be bound to + destructed objects. The old behaviour was to change them into 'undef' + closures. + + - Other Changes: + + +13-Apr-2004 (Lars Duening) -- Release 3.2.10 + + - Changed efuns: + + debug_info(): Removed the DID_MEM_UNUSED value from the DINFO_DATA: + DID_MEMORY result. + + debug_info(): Added the DID_ST_MB_ values to the DINFO_DATA: + DID_STATUS result. + + debug_info(): The DINFO_DATA:"objects" dump also lists the object + creation times. + + debug_info(): Added DID_ST_BOOT_TIME to the DINFO_DATA:DID_STATUS + result. + + debug_info(): Added a third argument to DINFO_OBJLIST to return + multiple objects. + + remove_action(): It is now possible to remove all actions + an object defines. + + save_object(), save_value(): The format of the saved data can + be specified with an function argument. + + set_connection_charset(), set_combine_charset(): Passing 0 as + argument re-establishes the default charset. + + sprintf(), printf(): Modifier '#' for '%O'/'%Q' prints the values + in a compact format. + + sprintf(), printf(): Format specifier '%b' prints a number + in binary notation. + + wizlist_info(): The evalcost statistic is now split into 'ticks' + and 'gigaticks', and a second non-decaying evalcost statistic + has been added. + + - Corrected efuns: + + find_call_out(): No longer throws an error when passed an unbound + lambda to look for. + + m_add(): Fixed a memory leak when existing entries were overwritten. + + remove_input_to(): The proper noecho state is restored after + removing a pending input handler. + + restore_object(): The function leaked memory when restoring from + a MALLOCed string. + + to_array(): When converting a string, the characters are treated + as unsigned. + + - New efuns: + + enable_telnet(): Enable or disable telnet for an interactive + object. + + get_combine_charset(), get_connection_charset(): Query the + combine resp. connection charset. + + get_max_commands(): Query the allowed command rate of an + interactive object. + + master(): Return the current master object. + + m_entry(): Return all values for mapping entry at once. + + net_connect(): Open a TCP connection. + + rmember(): Search arrays and strings from the end. + + set_max_commands(): Set the allowed command rate of an + interactive object. + + strrstr(): Search a string within a string backwards. + + variable_exists(): Check the existance of a named variable. + + variable_list(): Return all variable names of an object. + + - Master Object: + + - Fixed Crashers: + + Using 'break' or 'continue' in large programs caused bytecode + corruption. + + Function calls by address and global variable accesses are no + longer possible after set_this_object(). + + Overflowing the value stack during a secure_apply() could + crash the driver in the error recovery. + + walk_mapping(): If the callback object was destructed + before the first call, the efun crashed in the error handling. + + Swapping of volatile strings could crash the driver. + + H_COMMAND specifying an lfun by name which doesn't exist + in the interactive object. + + Using function_exists() or variable_exists() on a destructed + object. + + Editor: 'Z' given at the end of a file followed by two 'd' + corrupted the internal text storage, which sometimes + caused crashes. + + - Language: + + catch(; nolog) is now an official feature. + + New modifier catch(; publish). + + Constrained the switch() grammar so that only blocks are + suitable as bodies. + + Operator '&' can intersect mappings with other mappings and arrays. + + Macro __MAX_MALLOC__ is defined to the internal upper limit for + total memory usage. + + Macro __MSDOS_FS__ is defined on systems using the MS-DOS + filesystem conventions. + + Preprocessor symbol __FILENAME_SPACES__ is defined if the driver is + instructed to allow spaces in filenames. + + A cast of a value to its own type, or a cast not resulting in a + conversion operation generates a warning. The pragma + no_warn_empty_casts can turn this warning off. + + The strong_types/strict_types pragmas now persist beyond the + end of an include file (as does every other pragma). + + call_other()s on arrays of objects is now configurable; if enabled, + the macro __LPC_ARRAY_CALLS__ is defined. + + &= , &= implemented. + + Bugfix: Characters with the 8th bit set are now treated as positive + when entered as literal character constants. + + Bugfix: Illegal case ranges like '100..50' now generate + an error message. + + - Runtime: + + Mapping are now compacted (apart from a GC) only, if a certain + amount of time has elapsed since the last addition/removal + of a key, and if either more than half of the condensed entries + have been deleted, or if the number of hashed entries exceeds + the number of (non-deleted) condensed entries. + + A heart-beat error now longer aborts the heartbeat cycle. + + The operators -=, *= and /= can now operate on x , + yielding a result. + + Allowed longer program names in backtraces. + + If the H_RESET/H_CREATE_* hooks are defined by name, static + functions are found as well. + + Bugfix: Subtracting arrays of closures from each other now actually + identifies identical closures. + + Bugfix: The smalloc allocator now re-uses free 'large' memory for + small block chunks instead of always allocating them from the + system. + + - Other Changes: + + Editor: Consecutive 'z' or 'Z' commands no longer repeat + the previous current line. + + Editor: Faulty commands 'quit'/'Quit' are caught before + the text buffer is cleared. + + Configuration option '--enable-malloc-sbrk-trace' to enable + a log of all system memory requests including the stats of + the memory allocation request causing it. The intention is + to help debugging muds with high system memory usage. + + Configuration option '--with-optimize' to set the optimization + level in the generated Makefiles. + + New commandline option '--filename-spaces'/'--no-filename-spaces' + to allow or disallow space characters in filenames (default is to + disallow them). + + +02-Feb-2003 (Lars Duening) -- Release 3.2.9 + + - Changed efuns: + + add_action(): New flag AA_IMM_ARGS implements the sane NOSPACE + handling. + + allocate(): Accepts an optional initialisation value and can + create multi-dimensional arrays. + + ceil(), floor(): Also accept integer argument values. + + clones(): If the driver is compiled with DYNAMIC_COSTS, the cost + is proportional to the number of objects in the game. + + ctime(): Accepts the output of new efun utime() as well. + + debug_info(): New argument DINFO_TRACE to return the current + or the last error call stack. + Argument (DINFO_DATA, DID_MEMORY) also returns the number + and size of permanent and clib allocations, the amount of + memory allocated and available, and the amount of memory + unused (where applicable). + Argument (DINFO_DATA, DID_STATUS) also returns the number + of destructed objects and the total number of heartbeat calls. + Single values of (DINFO_DATA) can be returned instead of the + whole array. + Argument (DINFO_DUMP, "destructed") creates a dump + of all destructed objects, by default in /DEST_OBJ_DUMP. + + debug_message(): New second argument determines where to + log the message, and if to prepend a timestamp. + + deep_copy(): If DYNAMIC_COST is active, the evaluation cost + depends on size and nesting depth of copied arrays, structs + and mappings. + + exec(): If this_interactive() points to one of the involved + objects, it is switched over as well, like this_player(). + + filter(), map(), sort_array(), walk_mapping(): Protected lvalues + (e.g. &(i[0])) are not allowed as callback parameters. + + garbage_collection(): An optional filename argument specifies + the filename for the next and only the next GC. + + get_dir(): New flag GETDIR_PATH to return the full pathnames. + + get_type_info(): now returns the bound object for efun, + simul-efun and operator closures as well. + + inherit_list(): the inherited objects can be returned in a + tree reflecting the inheritance structure. Virtual inherits + can be returned tagged as such. + + input_to(): New option INPUT_PROMPT to specify a prompt for this + input_to. + + lambda(): Simul efuns with extended varargs weren't compiled + correctly. + + load_name(), object_name(), program_name(): 0 is now accepted + as argument, the efuns returns 0 in that case. + + object_info(): OINFO_MEMORY also returns the program flags + NO_INHERIT, NO_SHADOW and NO_CLONE, and gives a better account + of the memory used for strings and variables. + Single values can be returned instead of the whole array. + + printf(), sprintf(): A leading zero in the field size will now print + only leading zeros and not interfere with the pad string option. + + printf(), sprintf(): If an explicite pad string is defined, even + if it is space, the efuns won't remove white space before a line + end. + + printf(), sprintf(): Printing numbers with leading zeroes and a + sign character printed the sign in the wrong place. + + printf(), sprintf(): When printing closures with %O, the program name + for inherited lfun closures is printed as well. + + printf(), sprintf(): New format specifier 'Q' act like 'O', but quotes + special characters in strings. + + printf(), sprintf(): New format modifier '$' implements flush + formatting for strings and columns of strings. + + printf(), sprintf(): In justified column formatting, when a word is + too long to fit on a line by itself and there are at least two + characters space left on the current line, the long word is begun + immediately. Previously, such long words were always printed on a + line of their own. + + query_udp_port(), send_udp(): Renamed from query_imp_port() and + send_imp(). + + query_verb(): Added an optional flag argument to return the + verb as given in the add_action() statement. + + regexp functions: more compatible with 8-bit characters. + + regexp functions: New metacharacters '+' allows to specifiy 'at + least one match'. + + regreplace(): Accepts a closure to produce the replacement string + instead of just a constant string. + + regreplace(): Pattern which could match on the + empty string matched once too often at string end. + + replace_program(): Argument can be omitted if only one inherit + exists. + + replace_program(): If the object alread has closures bound, the + efun will issue a debug_message() and fail, instead of raising + a full runtime error. + + replace_program(): If the replacement program has virtually + inherited variables, it must be the first inherited program. + + restore_{object,value}(), save_{object,value}(): Non-lambda + closures, symbols and quoted arrays can now be saved and restored. + This required a new savefile format, though. + + sin(), cos(), tan(), atan(), atan2(), log(), exp(), sqrt(), pow(): + Integers are accepted as arguments, too. + + sizeof(): Now also returns the length of strings. + + terminal_colour(): Colour keys can now be mapped using a closure. + The pattern "%%^^" is recognized as second notation for literal + "%^" besides "%^%^". + + terminal_colour(): In wrapped formatting, when a word is + too long to fit on a line by itself and there are at least two + characters space left on the current line, the long word is begun + immediately. Previously, such long words were always printed on a + line of their own. + + add_verb(), add_xverb(), efun308(), file_name(), map_array(), + filter_array(), filter_mapping(), map_mapping(), m_sizeof(), + send_imp(), set_auto_include_string(): + Available only if driver is compiled with support for + deprecated efuns. + + - Corrected efuns: + + and_bits(), or_bits(), xor_bits(): The bits 5, 11, 17,... were + mishandled. + + call_out(): In release 3.2.8 lvalues were not allowed as arguments - + now they are again. + + call_out_info(): Did not return the target object for closure + call outs. + + call_resolved(): Now accepts a destructed object as second parameter + as it should. + + copy_file(), rename(): Just return a non-0 value on errors, but + don't throw a runtime error. + + deep_copy(): Didn't handle quoted arrays properly. + + filter(), map(): When used on multi-value mappings, the driver did + not recognize when the called closure kept a reference to the + array with the values, overwriting the values in the next + iteration. + + functionlist(): The filter flags didn't really work. + + input_to(): The option IGNORE_BANG didn't work. In charmode, !-escapes + after the first received data are now recognized. + + map() and other efuns taking callbacks arguments: The pattern + 'function, object, extra' was parsed such that 'object' became + part of the 'extra' arguments. + + notify_fail(): When used by an object which is not an + undestructed command_giver, this efun no longer leaks memory. + + object_info(): The returned OIB_NAME now starts with a '/' in plain + mode. + + printf(), sprintf(): The formatter "%^" will print "%^", for + compatibility with terminal_colour(). + + printf(), sprintf(): Column-formatting a string with one + newline printed one newline too few if the formatstring didn't + end immediately. + + printf(), sprintf(): A format instruction '%#=s' is now rejected. + + printf(), sprintf(): Max length of a result is now 128 KByte. + + printf(), sprintf(): One-line columns ending with a newline now + behave like multi-line columns and delay adding the newline + until the end of the line and only if no other columns are + pending. + + printf(), sprintf(): The formatter %O/%Q stumbled over really large + arrays and mappings (this was actually a potential crasher). + + sscanf(): the format '%s%d' failed to parse 'ab1cd' correctly. + + to_string(): Can handle operator closures now. + + unquote(): Unquoting symbols no longer adds a quote level. + + - New efuns: + + blueprint(): Return the blueprint object. + + copy_bits(): To copy ranges of bitstrings. + + db_affected_rows(), db_conv_string(), db_close(), db_connect(), + db_exec(), db_fetch(), db_handles(), db_coldefs(), db_insert_id(), + db_error(): + Optional: mySQL support. + + gmtime(), localtime(): Return the time broken up into its + constituents. + + find_input_to(): Find a pending input_to. + + include_list(): Return the files included in a program file. + + input_to_info(): Return information about all pending input_to's + for a player. + + m_add(): To add a new entry to a mapping and assign all values + in one go. + + md5(): Compute the MD5 message digest for a string. + + min(), max(): To select the minimum resp. maximum among a bunch + of numbers or strings. + + remove_input_to(): Remove a pending input_to. + + sgn(): Return the sign of a numeric argument. + + unquote(): Remove a quote from a quoted array or symbol. + + utime(): Return the current time in microsecond resolution. + + - Master Object: + + receive_udp(): Renamed from receive_imp(). + + privilege_violation(): Privilege "send_udp" replaced "send_imp". + + valid_trace(): New second argument to receives the argument + passed to the efun. + + runtime_error(): Receives an extra argument to distinguish between + normal runtime errors, and those occuring during a heartbeat. + + include_file(), H_INCLUDE_DIRS: The pathnames can now start + with leading slashes. + + If a master is forced to reload via SIGUSR1, all inherited objects + (if any) are reloaded as well. + + notify_shutdown(): Is now called too when the driver crashes. + In that case it is passed a string denoting the type of crash. + + Bugfix: slow_shut_down() was not called with previous_object(), + this_player() and this_interactive() being 0. + + Bugfix: When reactivating a destructed master, the lfuns + inaugurate_master() and reactivate_destructed_master() are found + even when static. + + - Fixed Crashers: + + Catching errors with catch() did not work reliably when the + driver was compiled with gcc. + + Unlucky combinations of heart_beat() definitions or declarations + (e.g. private and public inheritance in this order) crashed + the driver when the heart_beat() was called. + + When creating long value save strings, the driver crashed on + corrupted memory. + + If the object for a prompt-closure is destructed, the driver + could crash under extremely unlucky circumstances. + + #define'ing the name of an inline closure was not detected. + + Assignments of computed strings sometimes crashed the driver. + + Pre-increment or -decrement on an undefined variable, where + the result was used in a typechecked context. + + Adding a mapping to itself with '+='. + + The MAX_MALLOCED limit check was faulty, sometimes allowing + the driver to clobber memory. + + Tracing active when the control flow changes the current player + to a non-interactive object. + + Mapping lookups would under rare circumstances return a subtly + invalid result, causing random memory reads and clobbered + memory. This bug has been in the driver since before + 3.2.1@136 (the oldest version I could find). + + Allowing adding an action between two objects with no environment. + + "stack overflow" runtime errors freed svalues twice. + + It was possible to instruct sprintf to format a string + as both columns and as a table. sprintf() then formatted it as + columns, but any error (like buffer overflow) would crash the + driver. + + Formatting sprintf("%#9999999999999@s", ({ "bla" }) * 2) clobbered + its internal precision information on the first line, and thus + crashed on the second. + + Remove a couple crashers when handling numbers at the numerical + limits. + + Using set_this_object() before the simul-efun object was loaded. + + Updating the simul-efun object could crash the driver when the + update changed the signature of sefuns which had already been + used by objects: executing the calls after the update could + mess up the interpreter stack or cause it to execute garbage + bytecode. + + Too long error messages overwrote the stack. + + When players were already destructed in notify_shutdown(), + the following remove_player() was passed the destructed objects. + + If call_other() was implemented by a sefun which required + call_other() to be called itself, the compiler generated + invalid bytecode. + + If a method in a virtual inherit is rendered invisible, but also made + available again through a parallel inherit of the same program, the + compiler resolved the visible function to the wrong inheritance. + + Calling a self-destructing closure from limited(). + + Runtime errors in a catch occasionally crashed in the traceback + collection. + + LPC tracing with lambda closures or call_resolved(). + + - Language: + + New operators '>>>' and '>>>=' for logical right shifts. + + New operators '&&=' and '||=' for logical assignments. + + New LPC define __LDMUD__ to identify this driver branch. + + New LPC defines __VERSION_MAJOR__, __VERSION_MINOR__, + __VERSION_MICRO__, __VERSION_PATCH__ expand to the various parts + of the driver version. + + New LPC define __WIZLIST__ specifies from where the driver read the + initial wizlist information. + + New LPC defines __INT_MAX__ and __INT_MIN__ give the integer number + limits. + + New LPC defines __FLOAT_MAX__ and __FLOAT_MIN__ give the float number + limits. + + Numbers can also be specified as binary patterns with the '0b' + prefix, and as octals with the '0o' prefix. + + Floating point numbers can now also be specified in the + exponential notation, e.g. '3.14E-5'. + + Character escape sequences can now specify the character code + directly in decimal ('\[1-9]...'), octal ('\0o...'), sedecimal + ('\x...' and '\0x...') and binary ('\0b...'). + + The operators '++' and '--' can now be used on floats, too. + + Closures bound to destructed objects are now treated uniformly + like destructed objects and are replaced by 0s where required. + + Lfun and variable closures can now be compared with '==' and '!=', + and are treated correctly in alist and array operations. + + Inline closures inherit the visibility of their defining function. + + Experimental: Extended the construct catch() with the keyword + 'nolog', which suppresses logging the caught error in the logfiles. + It is meant for objects like wizard tools. + + It is no longer possible to prematurely end an inline closure + function by inserting a free '}'. + + Global functions are no longer hidden by local variables. + + It is now possible to cast to '(mixed)'. + + If operands of different types are given to '?:', the result + will have the type 'mixed'. + + Integers and floats can now be compared against each other. + + Identifier names can use the extended alpha characters from the + ISO 8859-1 alphabet. + + Experimental: The 'default' statement allows to set a default + visibility for variables and functions. It is meant to make + the re-engineering of existing code easier. + + It is possible to specify multiple pragmas in one '#pragma' + directive, separated by comma. + + Additions, subtractions and multiplications now check for + numeric overflows. + + The wildcarded supercall "*":: no longer throws an + error if none of the inherited objects defines the called function. + + In a for() statement, variables may now be declared without + initialisation (e.g. 'for (int i; ...)'). + + Definitions of local variables can appear anywhere in a block. The + variables are defined from the point of definition onward. + + If a value of the wrong type is passed to switch(), the driver + no longer throws a runtime error, but instead jumpgs to + the default case. + + If pragma 'pedantic' is in effect, the compiler warns about + calls to undefined functions even if typechecking is off. + + The notation ([:]) can be used to create empty mappings + of the given width. + + Duplicate inherits of a program on the toplevel raise a warning, + resp. an error if pragma 'pedantic' is in effect. + + New preprocessor macros __CATCH_EVAL_COST__ and + __MASTER_EVAL_COST__ for the corresponding evalcost + limits. + + If the driver uses the default debug.log file, its (mudlib) + name is available in the predefined macro __DEBUG_LOG__. + + Pragma warn_deprecated causes the compiler to print a warning + when a deprecated efun is used. + + Lfun closures can now explicitely name inherited lfuns (#'inh::fun). + + Bugfix: Adding mappings of different width throws an error, unless + one of the mappings if empty. + + Bugfix: Right shift by 32 or more bits was computed incorrectly. + + Bugfix: The type tracking of multiplications can returns the right + type when seeing 'mixed' operands. + + Bugfix: All = assignment can now operate on indexed strings + on the left hand side. + + Bugfix: Additions of floats to 0 yielded the wrong type. + + Bugfix: For closely consecutive switch case ranges (e.g. 'case + -2..-1: case 1..2:') the compiler generated faulty lookup + tables. + + Bugfix: Improved the typetracking for operator '&' when used with + mixed variables. + + Bugfix: A cast of an expression to its own type now longer inserts + a conversion operation. + + Bugfix: Global variables can no longer be redefined in the same + scope. + + Bugfix: It is now possible to use symbols in inline closures, ie. + "(: 'a :)". + + Bugfix: Escaped character constants are now only parsed up to a + maximum length. If no valid digits are found, the whole item + is simply treated as escaped character. + + Bugfix: When defining a function of the same name as an inherited + private function, the latter is no longer redefined. + + Bugfix: Multi-dimensional mapping indices in macro calls are no + longer confused with multiple macro arguments. + + Bugfix: Prototypes could modify the definition of inherited + functions in strange ways. + + Bugfix: Termination of a macro definition with End-of-file in + an include file confused the lexer. + + Bugfix: Inherited private functions no longer hide (simul-)efuns. + + Bugfix: Inheriting two private functions with the same name caused + the compiler to cross-define the second to the first. Invisible + to the user, this messed up any use by __INIT and other local + calls. + + Bugfix: The '::' operator did not recognize the separate namespaces + of variables and functions: void foo(string id) { ::id(id); } + lead to a syntax error. + + Bugfix: Using auto-includes no longer generate wrong line numbers + in error messages. + + Bugfix: "*"::foo() checks just the directly inherited programs. + + - Runtime: + + New runtime limit LIMIT_CALLOUTS (commandline option + '--max-callouts') for the maximum number of callouts at one time. + + Attempts to set a single string character to 0 now raise + a runtime error. + + The internal alarm timing is monitored and restarted in case the + alarm gets lost (happens often on Cygwin). + + Normal runtime errors are no longer reported on the console. + + New optional driver hook H_SEND_NOTIFY_FAIL to send a notify fail + message to the proper receiver. + + For the first 255 simul efuns, it is now permissible to catch + reference parameters in a varargs parameter. However, the only + permitted use is to pass them flat in a function call (using + apply())! + + The protocols MCP, MSP and MXP can now be negotiated through + the H_TELNET_NEG hook. + + New optional driver hook H_AUTO_INCLUDE to set a string or + closure for auto-include information. + + Errors while loading objects now include the inheritance chain. + + 'Too long evaluation' errors during a compilation (caused by too many + master calls) are considered compilation errors. + + Signal USR2 forces the driver to reopen the host.debug.log file. + + On systems with pthread support, the driver may be compiled to + use background threads to send the data to the network, thus + avoiding EWOULDBLOCK problems. + + External master calls (like for ERQ messages) get the same eval-cost + benefits during error handling as normal call-others. + + Lfun closures left danging by a replace_program() are now converted + into alien-lfun closures, so that the error handler has a chance + to determine the originating object. + + Bugfix: When logging on players, the initial prompt wasn't printed. + + Bugfix: IPv6 name lookup works again, and also with both xerq and erq. + + Bugfix: The driver now longer gets a confused when a client like + TinyFugue refuses to use CHARMODE. + + Bugfix: On mapping addition or element assignment, invalid keys (like + destructed objects) were still counted against the allowed mapping + size. + + Bugfix: Most reference loops as created by for example + 'b = 0 || &a; b = 0 || &a;' are detected. + + Bugfix: When destructing an object, references through closures + are removed from the local variables as well. + + Bugfix: Removing or destructing a shadow now properly + removes all associated actions. + + Bugfix: The tracing checks weren't done against the current + interactive as documented, but instead against the current + commandgiver. + + Bugfix: The automatic mapping compaction did not remove destructed + objects and closures. + + Bugfix: If H_INCLUDE_DIRS was set to an array of directory names, + the names couldn't have leading '/'. + + Bugfix: Before calling reset() or clean_up() from the backend, the + previous_object is cleared. + + - Other Changes: + + Renamed the driver executable to 'ldmud'. + + New driver option '--pidfile ' to write the pid of the + driver process into a file. + + New driver option '--erq ' to choose a different name + for the ERQ executable (default is 'erq'). The option can also + be used to specify the full pathname of the executable, and pass + simple arguments to the erq. + + The driver mode (plain or compat) can be selected with a commandline + option ('--no-compat' resp. '--compat'). + + New driver options '--min-malloced' and '--min-small-malloced' to + specify the size of the initial block allocations. + + New driver options '--wizlist-file ' and + '--no-wizlist-file' to control from where the driver reads the + initial wizlist information. + + New driver option '--args ' reads the commandline + arguments from a textfile. These argument files can be nested. + + New driver option '--random-seed ' sets the seed value + for the random number generator for debugging purposes. + If not given, the driver chooses a seed value on its own. + + New driver option '--hostname ' to specify the hostname, + overriding the value returned by the system. + + New driver option '--hostaddr ' to specify the hosts address, + overriding the value returned by the system. In particular + this address will be used to open the driver ports under. + + Removed a couple of fatal race-conditions in the xerq. + + New configuration option 'trace-code' enables the bytecode + tracing. + + New configuration option 'use-deprecated' allows + to disable obsolete and deprecated efuns. If enabled, the macro + __DEPRECATED__ is defined. + + New configuration options 'use-set-is-wizard', 'use-set-light' + and 'use-process-string' to configure the corresponding optional + efuns. + + The UDP port is now a standard feature. The option has been renamed + from 'catch_udp_port' to just 'udp_port'. + + Swapping is now a standard feature, though it still can be + disabled by specifying swapping times of 0. + + The ERQ_EXECUTE command now recognizes quoted arguments. + + The special command "malloc" is now under the control of the + IS_WIZARD flag, too. + + The erq/xerq commandline argument '--execdir

' allows the + to override the default ERQ_DIR specification for the directory + with the callable executables. + + New editor command 'T' to perform Tab <-> Whitespace conversion. + + Builtin command 'dumpallobj' now also creates a dump of all + destructed objects in the file /DEST_OBJ_DUMP. + + Character conversions are now done with regards to the locale + selected by the LANG environment variable. + + The xerq now sends an ERQ_OK message when a queued write + is finally completed. + + +20-Aug-2000 (Lars Duening) -- Release 3.2.8 + + - Changed efuns: + + add_action(): Implemented the 'abbreviated verb' feature associated + with negative flag values. + + apply(): Just returns the first argument if it is not a closure. + + clonep(): Accepts arguments of all types. + + command_stack(): Also returns which objects did the notify_fail()s. + + debug_info(): DINFO_MEMORY also prints the datasize of an object. + + debug_info(): New request DINFO_DATA. + + debug_info(): DINFO_MALLOC also returns the size of the wasted + memory (where available). + + inherit_list(): in non-COMPAT mode, the returned program names + start with a '/'. + + input_to(): input_to()s can now be stacked, and also accept + closures for the function (this is not yet a real stacked + input handling, though). + + load_name(): also accepts strings as object designators. + + map(): can now map an array through a mapping. + + object_info(): OINFO_MEMORY also returns the datasize of an object. + + present(): present(object) returns the object found, not its + environment. + + printf(): prints to NPCs are sent to catch_tell(). + + (s)printf(): object names printed in plain mode with %O now + start with a leading "/". + + (s)printf(): fields are now always padded to their full size, + even if no more data is following in the format string. + + query_notify_fail(): A flag allows to query which object set + the current error message. + + restore_object(): Preliminary: optionally restore the object + variables from a string. + + save_object(): Preliminary: optionally return the saved object + variables in a string. + + set_connection_charset(): Now also accepts a string as charset + specificator. + + sort_array(): Now accepts extra arguments to pass to the sorting + function. + + terminal_colour(): Straightened the key recognition, and added + a wrapping-only mode. + + to_string(): Now also accepts lambda closures and returns a string + suitable for debugging purposes. + + - Corrected efuns: + + get_type_info(): The object a lambda closure is bound to is now + returned properly. + + limited(): When calling closures with limited eval ticks, the + efun didn't make the full amount of ticks available. + + terminal_colour(): When removing spaces due to wrapping, the + efun sometimes falsely reported a "partial string too long". + + random(): distributes the random numbers more evenly, especially + over small ranges. + + regexp(), regexplode(), regreplace(): Errors in the regular + expression are raised as normal errors, and no longer printed + to the user. + + sprintf(): Is now reentrant. + + strstr(): When given negative starting offsets, the efun no + longer returns negative results. + + transpose_array(): Can now handle variable sized sub-arrays. + + typeof(): Now accepts literal references. + + unique_array(): When applied on an empty array, it no longer + raises an assertion. + + - New efuns: + + clones(): find and return the clones of an object. + + copy_file(): copies a file. + + save_value(): encodes a value into a string. + + restore_value(): decodes a value from a string generated by + save_value(). + + set_combine_charset(): Define characters to combine into strings + when received in charmode. + + - Master Object: + + valid_read(), valid_write(): new function code "copy_file" to cater + for the new efun. + + valid_write(): the old function code "do_rename" (used twice) was + replaced by "rename_from" and "rename_to". + + log_error(): New argument "warn" determines if the message + passed to the lfun is an error or just a warning. + + New include_file(): generates the full pathname of a filename + given in an #include directive. + + New inherit_file(): generates the full pathname of a filename + given in an inherit directive. + + - Fixed Crashers: + + Unaligned pointer access in efun functionlist(), caused + by unaligned function stand-ins. + + Multiplication of an array of allocated strings with an integer. + + Replacing a prompt-closure from within the closure. + + Comparison "#'f == other_type" (also !=). + + It is no longer possible to pass destructed objects to + input_to() handlers. + + When apply() was called with an array as last argument, it didn't + check the array elements for destructed objects. + + When creating lambda closures with more than 254 constants, the + compiler stored the number of values at the wrong place, + clobbering one of the constants. + + Evalstack overflows caused by intermediate results went + unnoticed. + + Calling functions with more than 255 arguments triggered + a sanity check. + + Replacing a notify-fail closure while it is executed. + + The default handling of telnet negotiations (answering DONT/WONT) + for unsupported options like NAWS if no hooks are specified, + leaked LPC stack entries, eventually overwriting memory. + + The lambda block ({ #'return }) was compiled incorrectly, + causing a 'Bad stack at F_RETURN' at the end of the lambda + closure latest. + + Efun write_file() running out of fds outside of a compilation + no longer tries to raise a compilation error. + + A failing include statement at the end of the internal lex buffer + no longer causes the driver to lex invalid data, sometimes + crashing while doing so. + + - Language: + + The preincrement/-decrement operators can now be applied + to wide mappings ('++m[x,y]'). + + If an object is inherited virtually multiple times, + a wildcarded super call ("*::") calls it only once. + + The ->() operator also accepts the following forms: + + x->y() where y is the name of a local variable + + x->"y"() where "y" is a constant string + + x->(y)() where y is an expression returning a string. + + New loop-construct: foreach(). + + call_others (ie. ->()) can be applied on arrays of objects, the + single call results are collected in one result array. + + += now works for being string and float as well. + + The operator "&" (and "&=") can now be used to intersect strings. + + The operator "-" (and "-=") can now be used to remove characters + from a string. + + -= now works for of any width, + like the normal subtraction already does. + + Indexing [..x] and [..' the opcode for '++' was + overwritten if the required a 2-Byte index internally. + Same for '--'. + + Bugfix: The preprocessor properly ignores a '//'-comment in + the argument list for a function macro. + + Bugfix: copy()ing or subtracting mappings did not remove destructed + elements first. + + - Runtime: + + If the driver is compiled for IPv6 support, the macro '__IPV6__' + is defined in LPC compiles. + + Simul-efuns can now take "varargs" arguments, like + in "foo(varargs mixed arg)". + + A simul-efun "call_other()" finally catches ->() calls as well. + + New pragma "no_shadow" to disallow shadows on a program. + + - Other Changes: + + The standard erq now supports the socket requests (actually it + does so for some time now, it just hasn't been published). + + Where supported, the erq supports lookup of IPv6 addresses. + + When compiled with DEBUG and CHECK_STRINGS, the commandline option + "--check-strings" checks the consistency of the shared string + table with every backend cycle. + + When compiled with DEBUG, the commandline option "--check-state" + controls the simplistic state checks of the virtual machine + in the backend loop. + + The driver can be compiled with bison as well as with byacc. + + New editor command 'M' to strip ^Ms from lineends. + + The commandline argument "--max-small-malloc" and the corresponding + configuration parameter are gone. + + +19-Aug-1999 (Lars Duening) -- Release 3.2.7 + + - Changed efuns: + + command(): + + native-mode restriction to the current object + is gone since there is no native mode anymore. + + commands are now stacked, meaning that after a + command finishes, the previous this_player(), verb, etc, + are restored. + + debug_info(): + + debug_info(DINFO_STATUS): now returns the status information + instead of printing it. debug_info(DINFO_STATUS, "malloc") + returns the malloc information usually connected with the + 'malloc' command. + + debug_info(DINFO_DUMP): allows to dump object information + and (if compiled) opcode usage information into a file. + + destruct(): accepts an already destructed object as argument. + + get_type_info(): returns for strings whether they are shared + or not. + + inherit_list(), debug_info(), object_info(): duplicate virtual + inherits are no longer listed. + + notify_fail(): calls to notify_fail() only affect the current + command. Also, NPCs can see 'their' notify_fail messages. + + object_info(): OINFO_BASIC result 'OIB_APPROVED' is gone. + + replace_program(): no longer flags objects as 'clones', but + instead uses the new flag 'O_REPLACED'. + + set_light(): is optional (though by default active) + + sprintf(), printf(): if an error occurs, the filename and line + are included in all error messages, not just the one printed + to stderr. + + symbol_function(): can't make closures from protected lfuns of + other objects anymore. + + trace(), traceprefix() are validated with the master-lfun + valid_trace(). + + - Corrected efuns: + + caller_stack(): is now declared to return 'object *' as it + indeed does. + + query_mud_port(): now accepts 'int' arguments as documented. + + restore_object(): protected against negative '([:])' + specifications. + + (s)printf(): prints variable closures properly even if the + variable vanished in a program replacement. + + symbol_variable(): recognizes objects with pending program + replacements. + + terminal_colour(): when wrapping is active, keywords were + replaced even when no '%^' was present. Not any more. + + to_object(): returns 0 for closures bound to a destructed + object. + + to_string(): converts variable closures properly even if the + variable vanished in a program replacement. + + to_string(): in compat mode, object names are no longer prepended + with a slash. + + unmkmapping(): now handles key-only mappings as it should. + + - New efuns: + + atan2(): alternative way to calculate the inverse tangens. + + ceil(): rounds a float up to the nearest whole number. + + floor(): rounds a float down to the nearest whole number. + + pow(): raises a float to the power of another float. + + + and_bits(): binary-ands two bitstrings. + + or_bits(): binary-ors two bitstrings. + + xor_bits(): binary-xors two bitstrings. + + invert_bits(): negates a bitstring. + + next_bit(): finds the next set (cleared) bit in a bitstring. + + last_bit(): returns the last set bit in a bitstring. + + count_bits(): count the number of bits in a bitstring. + + + (preliminary) command_stack(): returns the current command stack. + + command_stack_depth(): returns the depth of the command stack. + + (preliminary) execute_command(): low-level access to the + command parser. + + query_command(): returns the full command seen by the parser. + + query_notify_fail(): returns the current notify-fail setting. + + + object_time(): return the time an object was created. + + (preliminary) present_clone(): find objects with a specific + blueprint in a given environment. + + trim(): trim a certain character from a string. + + + (preliminary) limited(): executes a closure with changed runtime + limits + + query_limits(): queries the current/default runtime limits + + (preliminary) set_limits(): sets new default runtime limits. + + - Master Object: + + valid_write(): New call_funs 'objdump' and 'opcdump', passed + when attempting to dump the object and opcode information + into a file. This applies to the special commands 'dumpallobj' + and 'opcdump' as well as for the debug_info() uses. + + query_player_level(): obsolete and gone. + + valid_trace(): New lfun to validate uses of trace() and + traceprefix() (query_player_level() did this before). + + - Fixed Crashers: + + A heart_beat() removing all remaining objects on the hb list. + + An error during a (s)efun bound to a swapped out object could + crash the dump_trace. + + An error during macro expansion crashed the driver if the error + handling itself required macro expansion again. + + to_string() on a lfun of a swapped program. + + call_lambda() on not-inherited variable closures. + + replace_program() on a program of which one variable is referenced + by a symbol_variable(). + + Swap in of a closure variable which was invalidated during + a garbage collection. + + Failure to swap in an object during a garbage collection. + + Binding an unbound lambda to two objects and destructing + the originating object freed the lambda. + + - Language: + + '+=' now allows to add an int onto a float (before only floats + were allowed). Similar for '-=', '*=' and '/='. + + '*'/'*=' may multiply strings or arrays with positive numbers. The + result is the string/array times repeated. + + Scope of variables defined in nested local blocks ends with the + defining local block. The limit MAX_LOCAL applies only to the + variables which are in scope at the same time. Variables in + inner scopes can hide variables in outer scopes. Unchanged is that + local variables are initialised to 0 when their scope is + (re)entered. + + The pragmas 'no_local_scopes' and 'local_scopes' turn the local + scoping of variables off resp. back on. + + in 'for(, , ..., ; ...)' each can either + be a normal expression, or a definition of a local variable + with assignment, e.g. 'int i = '. The scope of such + variables is the whole for() statement. + + added inline closures as alternative to lfun closures: instead + of + int foo(int arg ) { return arg * 2; } + map_array(arr, #'foo); + you can write + map_array(arr, (: return $1 * 2; :) ); + or just + map_array(arr, (: $1 * 2 :) ); + The syntax is modelled after MudOS functionals. + + Support for alien-lfun closures was incomplete. + + New pragma 'no_clone': disallows clones of a program. + + New pragma 'no_inherit': disallows inheriting a program. + + Bugfix: Variables in closures may start with '_'. + + Bugfix: *::f() did not call all inherited functions (and others + multiple times). + + Bugfix: '#[<] indexing corrected. + + - Runtime: + + If hook H_RESET is a closure, and the closure returns a negative + value, the object will not be reset again, as + if set_next_reset(-1) had been used. + + New optional driver hook H_COMMAND allows to replace the driver + command parsing with your own. When used, the H_MODIFY_COMMAND + and H_NOTIFY_FAIL hooks are ignored. + + The H_MODIFY_COMMAND hooks may now change the commandgiver. The + change remains active during the execution of the command, and + the original commandgiver is passed to the NOTIFY_FAIL hook. + + Mappings have an upper limit of MAX_MAPPING_SIZE keys (default + is 5000). + + Special commands 'dumpallobj' and 'opcdump' are verified through + master->valid_write(). + + Driver can be compiled for DYNAMIC_COSTS, causing increased + eval-costs for computationally expensive operations. For + now, this applies only to string additions with an additional + cost of strlen(result)/1000 . + + - Other Changes: + + Tweaks to the timing of swapping, cleanup() and reset() to + achieve a smoother operation. + + On loading errors, the name of the affected object is printed + in the error message. + + The multiport feature is no longer optional. + + Corrections to the manpages of clone_object, clonep, filter_mapping, + filter_indices. + + Added the include files mudlib/sys/{trace.h,input_to.h,files.h, + debug_info.h} with definitions for the efuns trace(), input_to(), + file_size(), get_dir(), and debug_info(). + + NATIVE_MODE is gone. + + Euids are now a standard feature (the LPC macro __EUIDS__ stays + defined, though). + + Use of euids (loading or cloning other objects requires a non-zero + euid) can be enforced with the commandline option + '--strict-euids'. If defined, the LPC macro '__STRICT_EUIDS__' + is defined. + If your mud ran in NATIVE_MODE, this is the option you'll want + to use. + + The commandline options '--reset-time' and '--cleanup-time' specify + the cleanup and reset times. The old config.h symbols + TIME_TO_RESET and TIME_TO_CLEAN_UP just give the default values. + + The commandline options '--max-array' and '--max-mapping' can set + the max limits for arrays and mappings. For both, a setting of 0 + disables the limit checks. + + The commandline options '--max-bytes' and '--max-file' can set + the max IO limits for file reads and writes. + + Efun closures are printed with full name in error tracebacks. + + The ACCESS.ALLOW file can specify portnumbers. + + Special command 'status malloc' is now identical to 'malloc'. + + Special commands 'debugmalloc' and 'showsmallnewmalloced' are + deactivated. + + Bugfix: Reset of swapped objects did not work properly. + + Bugfix: Errors during the execution of closures no longer leak + memory. + + Bugfix: Switching driver hooks from within themselves no longer + leaks memory. + + Bugfix: New callouts added from within a callout with odd delay + resulted in the new callouts called at the wrong time. If the + new callout had a MAX_INT delay, the existing callout list + was effectively disabled. + + + +01-Apr-1999 (Lars Duening) -- Release 3.2.6 + - Changed efuns: + + allocate_mapping() renamed to m_allocate(). The old name + is still available as alias. + + clone_object() accepts objects as templates. + + efun308() renamed to set_environment(). The old name is + still available as alias. + + file_name() renamed to object_name(). The old name is still + available as alias. + + filter_mapping() renamed to filter_indices(). The old name + is still available as alias. + + mapping_contains() renamed to m_contains(). The old name is + still available as alias. + + map_mapping() renamed to map_indices(). The old name + is still available as alias. + + mapping_contains() renamed to m_contains(). The old name is + + m_values() can return any column of a mapping. + + notify_fail() returns 0. + + set_this_player() accepts 0 as argument. + + to_int(), to_object() and to_float() accept their result + type as argument. + + - Corrected efuns: + + call_out(): if the command_giver destructs before the callout + is activated, this_player() is made sure to be 0. + + map_array() stumbled when objects in the array in question + were destructed during the operation. + + sizeof(mapping) no longer counts destructed objects in + the mapping to the size. + + sprintf() of float values < 1.0 no longer causes a SING error. + + terminal_colour() correctly wraps strings with a length one less + than the wrap limit. + + this_interactive(): during login it points to the login object. + + - New efuns: + + abs(): return the absolute value of the argument. + + all_environment(): return all environments of an object. + + caller_stack(): return the call stack. + + clonep(): test if an object is a clone. + + copy(): produce a shallow copy of the argument. + + deep_copy(): produce a shallow copy of the argument. + + filter(): filter an array or fill-width mapping. + + load_name(): returns the filename of an objects blueprint. + + load_object(): loads an object. + + make_shared_string(): enters a string into the shared string table. + + map(): map an array or full-width mapping. + + m_reallocate(): changes the width of a mapping. + + object_info(): returns internal information about an object. + + program_name(): returns the name of an objects program. + + set_next_reset(): set the time of the next reset. + + unmkmapping(): deconstruct a mapping to arrays. + + upper_case(): make a string all upper case. + + widthof(): return the width of a mapping. + + - Master Object: + + All functions can be static. + + Functions like privilege_violation() or heart_beat_error(), but + also valid_read() and valid_write() no longer receive destructed + objects as arguments. + + Apply 'object_name()' renamed to 'printf_obj_name()'. + + - Compiler: + + New predefined macro __MAX_EVAL_COST__ expands to the evaluation + cost limit. + + Bugfix: __DOMAIN_NAME__ on some machines returned the NIS, not the + DNS domain. + + Bugfix: __MASTER_OBJECT__ could be set to a non-canonic name. + + Bugfix: __FILE__ and __MASTER_OBJECT__ returned names with leading + '/' in compat mode. + + Bugfix: (virtual) inheritance of variable-only objects with + variable initialisation doesn't crash the driver anymore. + + Bugfix: #'++/#'-- in closures work. + + - Fixed Crashers: + + Errors in a callout to an efun closure. + + Adding arrays up to and over the upper limit. + + Destruction of non-interactive snoopers. + + funcall()/apply() on a swapped variable. + + - Other Changes: + + The old behaviour of explode() and previous_object() is no longer + available. Floats, transcendent functions, mappings and extended + varargs are now permanent features of the driver. + + Re-implemented the handling of heartbeats, resets, cleanups and + swapping in order to avoid caused lags. This also makes + the config parameter RESET_GRANULARITY unnecessary. + + If used, the __INIT() function is protected instead of global, and + can't be called from outside the objects anymore (it shouldn't be + callable at all anyway). + + When subtracting mappings from each other, the subtrahend may + be of any width, but only its keys count. + + The 'status tables' command has an additional entry 'Object status'. + + Bugfix: fixed an eval cost leak in catch(). + + Bugfix: fixed memory leak in terminal_colour(). + + Bugfix: if a command disconnects, but not quits a player, the prompt + is no longer printed (before it ended up on stdout, cluttering + the logfiles). + + +10-Dec-1998 (Lars Duening) -- Release 3.2.5 + - Collapsing of '/' in object names also used for inherits. + - Default limit for bitstrings is 6144 bits. + - The efuns break_point() and swap() are disabled by default. + - Pre-release versions have an extended version number of + the form '3.2.5-dev.16'. + - Compat mode drivers define __COMPAT_MODE__ (meant to replace + COMPAT_FLAG eventually); native mode drivers define + __NATIVE_MODE__. + Similar, a driver using euids defines __EUIDS__. + - New defines __ERQ_MAX_SEND__ and __ERQ_MAX_REPLY__ when the + driver supports the ERQ. The values are the max sizes of + the send and receive buffers. + - MSDOS support removed (the MSDOS filesystem however is still + supported). + - It is now possible to use '..' in filenames as long as it + doesn't has the 'parent directory' meaning (that means, 'foo..bar' + is ok, bug 'foo/../bar' is not). + - When a connection is closed, the driver no longer sends + 'Closing down' as last text. + - Bugfix: branches in bigger lambda() closures use the correct + branch offsets. I am not completely sure if the bugfix is + correct, so I left in two 'DEBUG:' diagnostics with information + needed to debug the code further if necessary. + - Bugfix: the commandline parser printed a faulty error message + if a required value was missing. + - Bugfix: mapping_contains() freed the wrong values, clobbering + passed mapping literals. + - Bugfix: After an UDP packet was processed, the evaluation costs + are restored. + - Bugfix: The LPC compiler now accepts only regular files for includes. + - Bugfix: If a npc was destructed between to command() calls, and + the H_MODIFY_COMMAND hook was set to a string, the driver called + the named modify-command function on the destructed npc. + - Bugfix: During the execution of a closure, an extra refcount is + added to protect it from destruction while it is executed. This + is primarily a safety measure for the driver hooks which only + have 1 refcount and are thus very sensitive against master object + updates. + - Bugfix: Under some OS like Linux, the normal SIG_IGN handler is + just one-shot. To reliably ignore signals (ie SIGPIPE), a homemade + handler is used. + - Bugfix: regreplace("acc", "a*", "yy",1) trashed memory. + - Bugfix: runtime errors in an alien-lfun-closure (as created by + symbol_function() calls) no longer crash the driver during the + error handling. + - Bugfix: sprintf() on big floats or in long fields no longer causes + a buffer overrun (and should it happen nevertheless, a proper + fatal() is generated). + + +24-Sep-1998 (Lars Duening) -- Release 3.2.4 + - Bugfix for the collapsing of '/' in object names. + +21-Sep-1998 (Lars Duening) -- Release 3.2.3 + - Bugfix: mapping_contains() no longer returns destructed objects. + - New special command 'status files' to append file usage statistics + from within the mud to the file /FILESTAT. + - New commandline option: + --swap-compact: reuse free space in the swapfile immediately. + Giving this option results in smaller, but also more fragmented + swapfiles, and the swap performance may degrade. + +14-Sep-1998 (Lars Duening) -- Release 3.2.2 + - Version number pattern changed from 03.02.1@ + to 3.2.. This affects all uses of the __VERSION__ + lpc predefine. + - Objects may be loaded/inherited with filenames containing two or + more consecutive '/'es, these are collapsed into just one. + However, it is not possible to find objects using the wrong + names. + - The dreaded __INIT() bug is fixed. + - New commandline options: + --options : prints all options used in compiling the driver + --version : prints the game driver version + --help : prints a short help of the commandline options + --longhelp: prints an elaborate description of the commandline + options + - The commandline option handling was renovated, most options now + exist in a short and long form. This caused slight changes in + name and syntax for well-known options (.e.g '--gcollect_out_fd' + is now '--gcollect-out-fd '). Please see doc/driver/invocation + for further information. + +10-Jul-1998 (Lars Duening) -- Release 3.2.1@141-osb.16 + - Bugfix for the "*":: problem. + - Added a minimal master for simple driver tests. + +17-May-1998 (Lars Duening) -- Release 3.2.1@141-osb.14 and before + - Small speedup for regexps through usage of a cache. Also increased + the complexity limit for regexps. + - Added support for BeOS. + - Automatic garbage collections are kept at least 5 minutes + apart. Every garbage collection is logged on stdout. + - Variables are swapped independantly from program code. + - Multiple login ports may be used in parallel. The + port numbers are given on the commandline, efun query_mud_port() + was extended to return the appropriate port number. + - MudOS-efun terminal_colour() added by Mica. + - this_object() in destructed objects does not print a + diagnostic anymore. + - 'status tables' prints the number of cache hits both + absolute and as percentage. diff --git a/INSTALL b/INSTALL new file mode 100644 index 00000000..daa9fcdf --- /dev/null +++ b/INSTALL @@ -0,0 +1,298 @@ +Topics covered: + + - Unix or Unix-like systems, with additional details for FreeBSD, AIX 3.4, + and DEC Ultrix. + - IPv 6 + - mySQL + - BeOS + - Windows 95/98/NT + - OS/2 + + +Unix or Unix-like system +------------------------ + + The driver uses a standard autoconfiguration system which on most + systems does all the work for you (for exceptions see below). + To prepare the compilation, execute the 'configure' script from + within the src/ directory. + + configure checks for a number of site specific settings and uses this + information to create the files machine.h (from machine.h.in), Makefile + (from Makefile.in) and config.h (from config.h.in). We'll come back to + config.h below. + + configure takes a lot of arguments (--help will tell you everything), + but the most important are these: + + --prefix=PREFIX: the base directory for the mud installation, + defaults to /usr/local/mud . + --bindir=DIR: the directory to install the executables in, + defaults to ${PREFIX}/bin . + --libdir=DIR: the directory where the mudlib is found, + defaults to ${PREFIX}/lib . + --libexecdir=DIR: the directory where the programs for the ERQ are found, + defaults to ${PREFIX}/libexec . + + These settings are written into the Makefile and compiled into the driver, + just the mudlib directory setting can be changed with a commandline + argument. + + A lot of the drivers parameters can be tweaked for better performance; these + parameters are defined in config.h . This file too is created by configure, + which provides sensible defaults for all parameters for which no explicite + setting is provided. To tweak a setting yourself, pass the argument + '--enable-