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.

19-Aug-1999 (Lars Duening) -- Release 3.2.7
    - Froze 3.2.7-pre.3 for release.

14-Aug-1999 (Lars Duening)  (3.2.7-pre.3)
    - (settings/avalon) Updated.
    - (my-alloca.h) Removed a declaration-conflict on BeOS/PPC.
    - (comm.c) Removed a compilation warning.
    - (prolang.y) Redeclaration of local scopes inside of for() statements
        did not recover gracefully.

13-Aug-1999 (Lars Duening)  (3.2.7-pre.2)
    - (lpmud.prj, patchlevel.h) Cosmetics (the version number was incorrect).

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 '<v>-<r>-<p>.*' 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_<type>() 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_<type>(), deref_<type>() and free_<type>().
        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
        '(: <code/expression> :)' syntax MudOS invented. As a sideeffect,
        the lexer now knows the '#line <num>' 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 <stddef.h> 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 '<total> (<swapped>)' (before, only the objects
        status displayed that, programs displayed '<resident> (<swapped>)' ).
    - (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 '([:<width>])', the <width>
        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 alltogether. 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) Remove 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 instead of the DNS domain anyway) (thanks, Freaky!).
        (p-990309-1,2).
    - (configure, autoconf/configure.in, all machine.h) Added test and
        define for <sys/param.h>. 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 wanted 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@<patchlevel>
        to 3.2.<patchlevel> (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 <alloca.h>.
    - (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
        (<vonDincklage@ozet.de> 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.
