diff --git a/doc/driver/architectures b/doc/driver/architectures
new file mode 100644
index 0000000..430ee21
--- /dev/null
+++ b/doc/driver/architectures
@@ -0,0 +1,15 @@
+Actively supported and tested architectures:
+- i386
+- x86_64 (work in progress until the release of 3.5.0)
+
+Other architectures can't be tested by us. Many will probably work as well.
+Your mileage may vary, but we encourage you to test it. And please tell us
+about your experiences.
+
+Platforms which require aligned memory access seem to be not used by the users
+of LDMud (e.g. ARM, PowerPC, Sparc). For the sake of code simplicity and/or
+speed some code pieces (bytecode, murmur hash functions) don't care about
+alignment. On these platforms, the driver will probably not work at all right
+now. That can be fixed, but only if needed (there are users) and if the
+potential users support us (e.g. testing).
+
diff --git a/doc/driver/invocation b/doc/driver/invocation
index 5760b46..5cc4800 100644
--- a/doc/driver/invocation
+++ b/doc/driver/invocation
@@ -1,335 +1,365 @@
 NAME
-    driver/invocation
+        driver/invocation
 
 PURPOSE
-    Description of the invocation of the gamedriver, especially of the command
-    arguments. This document describes the commandline version of the driver
-    only; non-commandline versions are platform specific and described in
-    the related documentation.
+        Description of the invocation of the gamedriver, especially of the
+        command arguments. This document describes the commandline version of
+        the driver only; non-commandline versions are platform specific and
+        described in the related documentation.
 
 DESCRIPTION
-    The driver is invoked from the commandline as other normal programs.
-    Neither the current directory nor the directory the executable is in need
-    to be in any special relation the directory of the mudlib. Once the driver
-    is running, it emits two streams of outputs:
+        The driver is invoked from the commandline as other normal programs.
+        Neither the current directory nor the directory the executable is in
+        need to be in any special relation the directory of the mudlib. Once
+        the driver is running, it emits two streams of outputs:
 
-      - driver-related messages on stderr; this unfortunately includes
-        LPC compiler diagnostics
-      - LPC runtime-related messages in the logfile <mudlib>/<host>.parse.log
-        (the name can be changed).
+            - driver-related messages on stderr; this unfortunately includes
+              LPC compiler diagnostics
+            - LPC runtime-related messages in the logfile
+              <mudlib>/<host>.parse.log (the name can be changed).
 
-    It is possible to start the driver without any commandline arguments as
-    suitable defaults are specified at compile time. The invocation syntax
-    is:
+        It is possible to start the driver without any commandline arguments as
+        suitable defaults are specified at compile time. The invocation syntax
+        is:
 
-        driver [options] [<portnumber>]...
+            driver [options] [<portnumber>]...
 
-    <portnumber> the number of the port the driver shall use to accept
-    connections. The maximum number of ports is determined by MAXNUMPORTS
-    in the source file config.h.
+        <portnumber> the number of the port the driver shall use to accept
+        connections. The maximum number of ports is determined by MAXNUMPORTS
+        in the source file config.h.
 
-    The options modify the behaviour of the gamedriver. Some of them are only
-    available if a certain compile-time option was enabled (typically in
-    the source file config.h). The following options are recognized:
+        The options modify the behaviour of the gamedriver. Some of them are
+        only available if a certain compile-time option was enabled (typically
+        in the source file config.h). The following options are recognized:
 
-      -P|--inherit <fd-number>
-        Inherit filedescriptor <fd-number> from the parent process
-        as socket to listen for connections.
-        Only available if compiled with MAXNUMPORTS.
+          -P|--inherit <fd-number>
+            Inherit filedescriptor <fd-number> from the parent process
+            as socket to listen for connections.
+            Only available if compiled with MAXNUMPORTS.
 
-      -u|--udp <portnumber>
-        Specify the <portnumber> for the UDP port, overriding the compiled-in
-        default.
-        Only available if compiled with CATCH_UDP_PORT.
+          -u|--udp <portnumber>
+            Specify the <portnumber> for the UDP port, overriding the
+            compiled-in default.
+            Only available if compiled with CATCH_UDP_PORT.
 
-      -D|--define <macro>[=<text>]
-        Add <macro> (optionally to be expanded to <text>) to the list of
-        predefined macros known by the LPC compiler.
+          -D|--define <macro>[=<text>]
+            Add <macro> (optionally to be expanded to <text>) to the list of
+            predefined macros known by the LPC compiler.
 
-      -E|--eval-cost <ticks>
-        Set the number of <ticks> available for one evaluation thread.
-        If 0, execution is unlimited.
+          -E|--eval-cost <ticks>
+            Set the number of <ticks> available for one evaluation thread.
+            If 0, execution is unlimited.
 
-      -M|--master <filename>
-        Use <filename> for the master object.
+          -M|--master <filename>
+            Use <filename> for the master object.
 
-      -m|--mudlib <pathname>
-        Use <pathname> as the top directory of the mudlib.
+          -m|--mudlib <pathname>
+            Use <pathname> as the top directory of the mudlib.
 
-      --debug-file <filename>
-        Log all debug output in <filename> instead of
-        <mudlib>/<host>.debug.log .
+          --debug-file <filename>
+            Log all debug output in <filename> instead of
+            <mudlib>/<host>.debug.log .
 
-      --hostname <name>
-        Use <name> as hostname instead of what the system says.
+          --hostname <name>
+            Use <name> as hostname instead of what the system says.
 
-      --hostaddr <addr>
-        Use <addr> as address of this machine, instead of what the
-        system says.  In particular this address will be used to open
-        the driver ports.
+          --hostaddr <addr>
+            Use <addr> as address of this machine, instead of what the
+            system says. In particular this address will be used to open
+            the driver ports.
 
-      --no-compat
-      --compat
-        Select the mode (plain or compat) of the driver.
-        This choice does not affect the default name of the master object.
+          --no-compat
+          --compat
+            Select the mode (plain or compat) of the driver.
+            This choice does not affect the default name of the master object.
 
-      -d|--debug
-        Generate debug output; repeat the argument for even more output:
-          >= 1: log resets, clean ups, swaps, reception of urgend data,
-                   telnet negotiation states.
-                check_a_lot_of_refcounts() on startup when swapping of
-                   variables is disabled.
-          >= 2: log all add_message()s, name lookup failures, new players.
-          >= 3: progress of garbage collection
-          >= 4: even more junk from garbage collection
+          -d|--debug
+            Generate debug output; repeat the argument for even more output:
+              >= 1: log resets, clean ups, swaps, reception of urgend data,
+                       telnet negotiation states.
+                    check_a_lot_of_refcounts() on startup when swapping of
+                       variables is disabled.
+              >= 2: log all add_message()s, name lookup failures, new players.
+              >= 3: progress of garbage collection
+              >= 4: even more junk from garbage collection
 
-      -c|--list-compiles
-        List the name of every compiled file on stderr.
+          -c|--list-compiles
+            List the name of every compiled file on stderr.
 
-      -e|--no-preload
-        Pass a non-zero argument (the number of occurences of this option)
-        to master->preload(), which usually inhibits all preloads of castles
-        and other objects.
+          -e|--no-preload
+            Pass a non-zero argument (the number of occurrences of this option)
+            to master->preload(), which usually inhibits all preloads of
+            castles and other objects.
 
-      --erq <filename>
-      --erq "<filename> <erq args>"
-        Use <filename> instead of 'erq' as the basename of the ERQ executable.
-        If the name starts with a '/', it is take to be an absolute pathname,
-        otherwise it is interpreted relative to <bindir>. If not specified,
-        'erq' is used as the executable name.
+          --erq <filename>
+          --erq "<filename> <erq args>"
+            Use <filename> instead of 'erq' as the basename of the ERQ
+            executable. If the name starts with a '/', it is take to be an
+            absolute pathname, otherwise it is interpreted relative to
+            <bindir>. If not specified, 'erq' is used as the executable name.
 
-        By enclosing the argument value in quotes, it is possible to pass
-        arguments (e.g. --execdir) to the erq. These arguments however must
-        not contain embedded spaces.
+            By enclosing the argument value in quotes, it is possible to pass
+            arguments (e.g. --execdir) to the erq. These arguments however must
+            not contain embedded spaces.
 
-      -N|--no-erq
-        Don't start the erq demon (if it would be started at all).
+          -N|--no-erq
+            Don't start the erq demon (if it would be started at all).
 
-      --alarm-time <seconds>
-        Set the granularity of call_out() and heartbeat timing. Minimum
-        value is 1.
+          --alarm-time <seconds>
+            Set the granularity of call_out() and heartbeat timing. Minimum
+            value is 1.
 
-      --heart-interval <seconds>
-        Set the interval between two heartbeats. Minimum value is 1.
+          --heart-interval <seconds>
+            Set the interval between two heartbeats. Minimum value is 1.
 
-      --sync-heart
-        All heartbeats occur at the same time (modulo granularity).
-      
-      --async-heart
-        Heartbeats occur when they are due (modulo granularity).
+          --sync-heart
+            All heartbeats occur at the same time (modulo granularity).
 
-      -t|--no-heart
-        Disable heartbeats and call_outs.
+          --async-heart
+            Heartbeats occur when they are due (modulo granularity).
 
-      -f|--funcall <word>
-        The lfun master->flag() is called with <word> as argument before the
-        gamedriver accepts netword connections.
+          -t|--no-heart
+            Disable heartbeats and call_outs.
 
-      --regexp pcre | traditional
-        Select the default regexp package.
+          -f|--funcall <word>
+            The lfun master->flag() is called with <word> as argument before
+            the gamedriver accepts netword connections.
 
-      --max-array <size>
-        The maximum number of elements an array can hold.
-        Set to 0, arrays of any size are allowed.
+          --regexp pcre | traditional
+            Select the default regexp package.
 
-      --max-mapping <size>
-        The maximum number of elements a mapping can hold.
-        Set to 0, mappings of any size are allowed.
+          --max-array <size>
+            The maximum number of elements an array can hold.
+            Set to 0, arrays of any size are allowed.
 
-      --max-mapping-keys <size>
-        The maximum number of entries a mapping can hold.
-        Set to 0, mappings of any size are allowed.
+          --max-mapping <size>
+            The maximum number of elements a mapping can hold.
+            Set to 0, mappings of any size are allowed.
 
-      --max-callouts <size>
-        The maximum number of callouts at one time.
-        Set to 0, any number is allowed.
+          --max-mapping-keys <size>
+            The maximum number of entries a mapping can hold.
+            Set to 0, mappings of any size are allowed.
 
-      --max-bytes <size>
-        The maximum number of bytes one read_bytes()/write_bytes() call
-        can handle.
-        Set to 0, reads and writes of any size are allowed.
+          --max-callouts <size>
+            The maximum number of callouts at one time.
+            Set to 0, any number is allowed.
 
-      --max-file <size>
-        The maximum number of bytes one read_file()/write_file() call
-        can handle.
-        Set to 0, reads and writes of any size are allowed.
+          --max-bytes <size>
+            The maximum number of bytes one read_bytes()/write_bytes() call
+            can handle.
+            Set to 0, reads and writes of any size are allowed.
 
-      --max-thread-pending <size>\n"
-        The maximum number of bytes to be kept pending by the socket write
-        thread.
-        Set to 0, an unlimited amount of data can be kept pending.
+          --max-file <size>
+            The maximum number of bytes one read_file()/write_file() call
+            can handle.
+            Set to 0, reads and writes of any size are allowed.
 
-        This option is ignored if pthreads are not used.
+          --max-thread-pending <size>\n"
+            The maximum number of bytes to be kept pending by the socket write
+            thread.
+            Set to 0, an unlimited amount of data can be kept pending.
 
-      --cleanup-time <time>
-        The idle time in seconds for an object before the driver tries to
-        clean it up. It should be substantially longer than the reset time.
-        A time <= 0 disables the cleanup mechanism.
+            This option is ignored if pthreads are not used.
+
+          --cleanup-time <time>
+            The idle time in seconds for an object before the driver tries to
+            clean it up. It should be substantially longer than the reset time.
+            A time <= 0 disables the cleanup mechanism.
+
+          --reset-time <time>
+            The time in seconds before an object is reset. A time <= 0 disables
+            the reset mechanism.
+
+          -s <time>  | --swap-time <time>
+          -s v<time> | --swap-variables <time>
+            Time in seconds before an object (or its variables) are swapped
+            out. A time less or equal 0 disables swapping.
+
+          -s f<name> | --swap-file <name>
+            Swap into file '<name>' instead of '<mudlib>/LP_SWAP.<host>'.
+
+          -s c       | --swap-compact
+            Reuse free space in the swap file immediately.
+            Giving this option results in smaller, but also more fragmented
+            swapfiles, and the swap performance may degrade.
 
-      --reset-time <time>
-        The time in seconds before an object is reset. A time <= 0 disables
-        the reset mechanism.
+          --hard-malloc-limit <size>
+            Restrict total memory allocation to <size> bytes.
+            A <size> of 0 or 'unlimited' removes any restriction.
 
-      -s <time>  | --swap-time <time>
-      -s v<time> | --swap-variables <time>
-        Time in seconds before an object (or its variables) are swapped out.
-        A time less or equal 0 disables swapping.
+          --soft-malloc-limit <size>
+            This value gives a soft limit of the allocated memory (kind of low
+            watermark). If this value is exceeded, the driver will call
+            low_memory() in the master to inform the mudlib about the
+            (potentially) developing low memory situation.
+            A <size> of 0 or 'unlimited' removes this threshold.
 
-      -s f<name> | --swap-file <name>
-        Swap into file <name> instead of <mudlib>/LP_SWAP.<host> .
+          --min-malloc <size>
+          --min-small-malloc <size>
+            Determine the sizes for the explicit initial large resp. small
+            chunk allocation. A size of 0 disables the explicit initial
+            allocations.
 
-      -s c       | --swap-compact
-        Reuse free space in the swap file immediately.
-        Giving this option results in smaller, but also more fragmented
-        swapfiles, and the swap performance may degrade.
+          -r u<size> | --reserve-user <size>
+          -r m<size> | --reserve-master <size>
+          -r s<size> | --reserve-system <size>
+            Reserve <size> amount of memory for user/master/system allocations
+            to be held until main memory runs out.
 
-      --max-malloc <size>
-        Restrict total memory allocations to <size> bytes.
-        A <size> of 0 or 'unlimited' removes any restriction.\n"
+          --filename-spaces
+          --no-filename-spaces
+            Allow/disallow the use of spaces in filenames.
 
-      --min-malloc <size>
-      --min-small-malloc <size>
-        Determine the sizes for the explicite initial large resp. small chunk
-        allocation. A size of 0 disables the explicite initial allocations.
+          --strict-euids
+          --no-strict-euids
+            Enable/disable the enforced use of euids.
 
-      -r u<size> | --reserve-user <size>
-      -r m<size> | --reserve-master <size>
-      -r s<size> | --reserve-system <size>
-        Reserve <size> amount of memory for user/master/system allocations to
-        be held until main memory runs out.
+          --share-variables
+          --init-variables
+            Select how clones initialize their variables:
+              - by sharing the current values of their blueprint
+              - by initializing them afresh (using __INIT()).
 
-      --filename-spaces
-      --no-filename-spaces
-        Allow/disallow the use of spaces in filenames.
+          --pidfile <filename>\n"
+            Write the pid of the driver process into <filename>.\n"
 
-      --strict-euids
-      --no-strict-euids
-        Enable/disable the enforced use of euids.
+          --tls-key <pathname>
+            Use <pathname> as the x509 keyfile, default is 'key.pem'.
+            If relative, <pathname> is interpreted relative to <mudlib>.
 
-      --share-variables
-      --init-variables
-        Select how clones initialize their variables:
-          - by sharing the current values of their blueprint
-          - by initializing them afresh (using __INIT()).
+          --tls-cert <pathname>
+            Use <pathname> as the x509 certfile, default is 'cert.pem'.
+            If relative, <pathname> is interpreted relative to <mudlib>.
 
-      --pidfile <filename>\n"
-        Write the pid of the driver process into <filename>.\n"
+          --tls-crlfile <pathname>
+            Use <pathname> as the filename holding your certificate revocation
+            lists. If relative, <pathname> is interpreted relative to <mudlib>.
 
-      --tls-key <pathname>
-          Use <pathname> as the x509 keyfile, default is 'key.pem'.
-          If relative, <pathname> is interpreted relative to <mudlib>.
+          --tls-crldirectory <pathname>
+            Use <pathname> as the directory where your certificate revocation
+            lists reside. If relative, <pathname> is interpreted relative to
+            <mudlib>.
 
-      --tls-cert <pathname>
-         Use <pathname> as the x509 certfile, default is 'cert.pem'.
-         If relative, <pathname> is interpreted relative to <mudlib>.
+          --tls-trustfile <pathname>
+            Use <pathname> as the filename holding your trusted PEM
+            certificates. If relative, <pathname> is interpreted relative to
+            <mudlib>.
 
-      --tls-trustfile <pathname>
-        Use <pathname> as the filename holding your trusted PEM certificates.
-        If relative, <pathname> is interpreted relative to <mudlib>.
+          --tls-trustdirectory <pathname>
+            Use <pathname> as the directory where your trusted
+            PEM certificates reside, default is '/etc/ssl/certs'.
+            If relative, <pathname> is interpreted relative to <mudlib>.
 
-      --tls-trustdirectory <pathname>
-        Use <pathname> as the directory where your trusted
-        PEM certificates reside, default is '/etc/ssl/certs'.
-        If relative, <pathname> is interpreted relative to <mudlib>.
+          --wizlist-file <filename>
+          --no-wizlist-file
+            Read and save the wizlist in the named file (always interpreted
+            relative the mudlib); resp. don't read or save the wizlist.
 
-      --wizlist-file <filename>
-      --no-wizlist-file
-        Read and save the wizlist in the named file (always interpreted
-        relative the mudlib); resp. don't read or save the wizlist.
+          --gcollect-outfd <filename>|<num>
+            Garbage collector output (like a log of all reclaimed memory
+            blocks) is sent to <filename> (or inherited fd <num>) instead of
+            stderr. Only available if compiled with MALLOC_smalloc.
 
-      --gcollect-outfd <filename>|<num>
-        Garbage collector output (like a log of all reclaimed memory blocks)
-        is sent to <filename> (or inherited fd <num>) instead of stderr.
-        Only available if compiled with MALLOC_smalloc.
+          --y|--yydebug
+            Enable debugging of the LPC compiler.
+            Only available if compiled with YYDEBUG.
 
-      --y|--yydebug
-        Enable debugging of the LPC compiler.
-        Only available if compiled with YYDEBUG.
+          --randomdevice <filename>
+            Chooses the source of the seed for the random number generator.
+            Default is /dev/urandom, Fall-back if <filename> is not readable
+            is the system clock. If you want to seed the PRNG with a specific
+            seed, you can use a filename with the seed and give it here instead
+            of using --random-seed. (Note: the last one of --randominit and
+            --random-seed wins!)
 
-      --random-seed <num>
-        Seed value for the random number generator. If not given, the
-        driver chooses a seed value on its own.
-        This option is for debugging.
+          --random-seed <num>
+            Seed value for the random number generator. If not given, the
+            driver chooses a seed value on its own.
+            This option is for debugging.
 
-      --check-state <lvl>
-        Perform a regular simplistic check of the virtual machine according
-        to <lvl>:
-          = 0: no check
-          = 1: once per backend loop
-          = 2: at various points in the backend loop
-        Only available if compiled with DEBUG.
+          --check-state <lvl>
+            Perform a regular simplistic check of the virtual machine according
+            to <lvl>:
+              = 0: no check
+              = 1: once per backend loop
+              = 2: at various points in the backend loop
+            Only available if compiled with DEBUG.
 
-      --check-refcounts
-        Every backend cycle, all refcounts in the system are checked.
-        SLOW! Only available if compiled with DEBUG.
+          --check-refcounts
+            Every backend cycle, all refcounts in the system are checked.
+            SLOW! Only available if compiled with DEBUG.
 
-      --gobble-descriptors <num>
-        <num> (more) filedescriptors are used up. You'll know when you need it.
-        Only available if compiled with DEBUG.
+          --gobble-descriptors <num>
+            <num> (more) filedescriptors are used up. You'll know when you need
+            it. Only available if compiled with DEBUG.
 
-      --check-strings
-        Every backend cycle, all shared strings in the system are checked.
-        SLOW! Only available if compiled with DEBUG and CHECK_STRINGS.
+          --check-strings
+            Every backend cycle, all shared strings in the system are checked.
+            SLOW! Only available if compiled with DEBUG and CHECK_STRINGS.
 
-      -V|--version
-        Print the version of the driver and exit.
+          -V|--version
+            Print the version of the driver and exit.
 
-      --options
-        Print the version and compilation options of the driver and exit.
+          --options
+            Print the version and compilation options of the driver and exit.
 
-      -h|-?|--help
-        Display a command help and exit.
+          -h|-?|--help
+            Display a command help and exit.
 
-      --longhelp
-        Display a long command help and exit.
+          --longhelp
+            Display a long command help and exit.
 
-      --args <filename>
-        The driver reads and parses the given file and treats its contents
-        as if given on the commandline right where the --args option
-        occured. The file itself can again contain --args options.
+          --args <filename>
+            The driver reads and parses the given file and treats its contents
+            as if given on the commandline right where the --args option
+            occurred. The file itself can again contain --args options.
 
 
-DESCRIPTION -- Argument Parser
-    The parser analyses the commandline arguments given with the driver
-    invocation and distinguishes 'options', which start with a '-', from
-    proper arguments. Options are further distinguished by their name and
-    may take an additional value. In general, options and arguments can be
-    givein in any order.
+DESCRIPTION
+        -- Argument Parser
+        The parser analyses the commandline arguments given with the driver
+        invocation and distinguishes 'options', which start with a '-', from
+        proper arguments. Options are further distinguished by their name and
+        may take an additional value. In general, options and arguments can be
+        given in any order.
 
-    Options are recognized in two forms. In the short form the option must
-    be given as a single '-' followed by a single letter. In the long form,
-    options start with '--' followed by a string of arbitrary length. The
-    short options are case sensitive, the long options aren't.
-    Most options can be specified in both the short and long form, but that
-    is not mandatory. Examples: '-r' and '--recursive'.
+        Options are recognized in two forms. In the short form the option must
+        be given as a single '-' followed by a single letter. In the long
+        form, options start with '--' followed by a string of arbitrary length.
+        The short options are case sensitive, the long options aren't. Most
+        options can be specified in both the short and long form, but that is
+        not mandatory. Examples: '-r' and '--recursive'.
 
-    If an option takes a value, it must follow the option immediately after
-    a separating space or '='. Additionally, the value for a short option
-    may follow the option without separator. Examples are: '-fMakefile',
-    '-f Makefile', '--file=Makefile' and '--file Makefile'.
+        If an option takes a value, it must follow the option immediately after
+        a separating space or '='. Additionally, the value for a short option
+        may follow the option without separator. Examples are: '-fMakefile',
+        '-f Makefile', '--file=Makefile' and '--file Makefile'.
 
-    Short options may be collated into one argument, e.g. '-rtl', but
-    of these only the last may take a value.
+        Short options may be collated into one argument, e.g. '-rtl', but
+        of these only the last may take a value.
 
-    The option '--' marks the end of options. All following command arguments
-    are considered proper arguments even if they start with a '-' or '--'.
+        The option '--' marks the end of options. All following command
+        arguments are considered proper arguments even if they start with a '-'
+        or '--'.
 
-    The arguments are usually taken from the commandline; but the parser
-    is also able to read them from a textfiles, which can be nested. The
-    content of the textfiles is broken down into words delimited by whitespace,
-    which are then treated as given on the commandline at the place where
-    the instruction to read the textfile stood.
+        The arguments are usually taken from the commandline; but the parser
+        is also able to read them from a textfiles, which can be nested. The
+        content of the textfiles is broken down into words delimited by
+        whitespace, which are then treated as given on the commandline at the
+        place where the instruction to read the textfile stood.
 
-    The file parser recognizes simple double-quoted strings, which must be
-    contained on a single line. Additionally, the '#' character given by
-    itself is a comment marker - everthing after the '#' until the end
-    of the current line is ignored.
+        The file parser recognizes simple double-quoted strings, which must be
+        contained on a single line. Additionally, the '#' character given by
+        itself is a comment marker - everthing after the '#' until the end
+        of the current line is ignored.
 
 HISTORY
-    LDMud 3.2.9 added the --max-thread-pending, --hostname,
-      --hostaddr, --args and --random-seed options.
-    LDMud 3.2.10 added the --filename-spaces options.
-    LDMud 3.3.378 added --share-variables, --init-variables.
-    LDMud 3.3.475/3.2.11 added --tls-key, --tls-cert.
-    LDMud 3.3.672/3.2.11 added --tls-trustfile, --tls-trustdirectory.
-    LDMud 3.3.677 added --max-mapping-keys.
+        LDMud 3.2.9 added the --max-thread-pending, --hostname,
+            --hostaddr, --args and --random-seed options.
+        LDMud 3.2.10 added the --filename-spaces options.
+        LDMud 3.3.378 added --share-variables, --init-variables.
+        LDMud 3.3.475/3.2.11 added --tls-key, --tls-cert.
+        LDMud 3.3.672/3.2.11 added --tls-trustfile, --tls-trustdirectory.
+        LDMud 3.3.677 added --max-mapping-keys.
+        LDMud 3.3.714/3.2.15 added --tls-crlfile, --tls-crldirectory.
+        LDMud 3.3.x added --randominit.
diff --git a/doc/driver/limitations b/doc/driver/limitations
new file mode 100644
index 0000000..1504238
--- /dev/null
+++ b/doc/driver/limitations
@@ -0,0 +1,82 @@
+This file contains a collection of non-configurable limits:
+
+Program properties
+==================
+* maximum program length: 1 MB (1048575 Bytes)
+  This is defined by FUNSTART_MASK in exec.h, which is the maximum offset
+  (address) of a functions code within the program block (relativ to the
+  beginning). Changing it involves changing funflag_t and probably other
+  stuff.
+
+* maximum number of programs: 2^32-1
+  The unique program ID number is a int32. It is incremented for each compiled
+  program. If it reaches zero (after wrapping to negative values) the
+  compiler or swapper calls renumber_programs(), which recycles numbers from
+  old programs.
+  (exec.h, prolang.y, swap.c, ...)
+
+* maximum number of functions in a program: 65534
+  The lookup table for function indexes holding the offsets of the function in
+  the functions tables is unsigned short.
+  The types of function arguments are stored in program_s.argument_types,
+  which is index by the unsigned short programs_s.type_start. 65535 has a
+  special meaning. Some code relies that this is unsigned short.
+  (exec.h, ...)
+  program_s.num_function_names and num_functions are unsigned short as well.
+
+* maximum length of switch: 256k (262143 Bytes)
+  Limited by BREAK_ADDRESS_MASK and CONTINUE_ADDRESS_MASK?
+
+* maximum offset for branches: 32765 (0x7ffd)
+  (prolang.y)
+
+* number of virtual variables: 256
+* number of global variables: 65536 (F_IDENTIFIER16)
+* number of local variables: 256 (F_PUSH_LOCAL_VARIABLE_LVALUE)
+* number of context variables: 256 (Should be consistent with local
+  variables, MAX_LOCAL applies to both. 16 bit opcodes are not used yet.)
+
+* max number of struct members: 255
+  (exec.h, ...)
+
+* max number of structs per program: usually 32767 (short)
+
+
+Hash tables
+===========
+* maximum size of the hash table for identifiers (ITABLE): 32768
+  The hashes of identifiers are signed short which are in most cases 16 bit
+  wide integers (lex.h, lex.c, ...)
+
+* maximum size of the hash table for objects (OTABLE): 65536
+* maximum size of the hash table for shared strings (HTABLE): 65536
+  The hashes are of type unsigned short which are in most cases 16 bit
+  wide integers.
+
+
+Objects
+=======
+* maximum clone ID number: 2^32-1
+  Not a real limitation, after that the driver starts checking if
+  blueprint name + #cloneid are unique.
+
+
+Memory management
+=================
+* max. size of single large block in slaballo.c and smalloc.c:
+  0x07ffffff (134217727, defined by M_MASK)
+
+
+Language
+========
+* maximum number of simul-efuns: 2048
+  Only values 0xf800-0xffff in .x.closure_type of
+  a T_CLOSURE svalue are reserved for simul-efuns.
+  F_SIMUL_EFUN however takes a short int, so there 65536
+  simul-efuns would be possible.
+
+* maximum number of python efuns: 2048
+  Only values 0xe800-0xefff in .x.closure_type of
+  a T_CLOSURE svalue are reserved for python efuns.
+  F_PYTHON_EFUN however takes a short int, so there 65536
+  python efuns would be possible.
diff --git a/doc/driver/predefined b/doc/driver/predefined
index 17a7eb0..8d46e67 100644
--- a/doc/driver/predefined
+++ b/doc/driver/predefined
@@ -1,130 +1,138 @@
 NAME
-    predefined - predefined #defines by the parser
+        predefined - predefined #defines by the parser
 
 DESCRIPTION
-    Several preprocessor macros are pre#defined by the parser,
-    to provide information about parser version, compile time
-    options and parser invocation options:
+        Several preprocessor macros are pre#defined by the parser,
+        to provide information about parser version, compile time
+        options and parser invocation options:
 
-      LPC3            : always defined.
-      __LDMUD__       : always defined.
-      __EUIDS__       : always (for compatibility).
-      COMPAT_FLAG     : defined if the driver runs in compat mode.
-      __COMPAT_MODE__ : ditto
-      __STRICT_EUIDS__: defined if strict euid usage is enforced.
-      __FILENAME_SPACES__: defined if filenames may contain spaces.
+        LPC3                       : always defined.
+        __LDMUD__                  : always defined.
+        __EUIDS__                  : always (for compatibility).
+        COMPAT_FLAG                : defined if the driver runs in compat mode.
+        __COMPAT_MODE__            : ditto
+        __STRICT_EUIDS__           : defined if strict euid usage is enforced.
+        __FILENAME_SPACES__        : defined if filenames may contain spaces.
 
-      __MASTER_OBJECT__ : the name of the master object (in compat mode
-                          without leading '/').
-      __FILE__          : the name of the compiled file (in compat mode
-                          without leading '/').
-      __LINE__          : the current line number.
-      __FUNCTION__      : the current function name.
-      __DIR__           : the directory path of the compiled file (in
-                          compat mode without leading '/').
-      __PATH__(n)       : the directory path of the compiled file without
-                          the <n> trailing elements (in compat mode without
-                          leading '/').
-      __VERSION__       : the version string of the driver.
-      __VERSION_MAJOR__ : the major version number of the driver.
-      __VERSION_MINOR__ : the minor version number of the driver.
-      __VERSION_MICRO__ : the micro version number of the driver.
-      __VERSION_PATCH__ : the patchlevel of the driver; a 0 here means
-                          'no patchlevel'.
-      __VERSION_COMMITID__ : the commit ID of the source of the driver 
-                             (attention: it might be <unknown>, if the driver
-                              was not compiled from a git repository)
-      __VERSION_LOCAL__ : the (optional) LOCAL_LEVEL, the user has defined.
+        __MASTER_OBJECT__          : the name of the master object (in compat
+                                     mode without leading '/').
+        __FILE__                   : the name of the compiled file (in compat
+                                     mode without leading '/').
+        __LINE__                   : the current line number.
+        __FUNCTION__               : the current function name.
+        __DIR__                    : the directory path of the compiled file
+                                     (in compat mode without leading '/').
+        __PATH__(n)                : the directory path of the compiled file
+                                     without the <n> trailing elements (in
+                                     compat mode without leading '/').
+        __VERSION__                : the version string of the driver.
+        __VERSION_MAJOR__          : the major version number of the driver.
+        __VERSION_MINOR__          : the minor version number of the driver.
+        __VERSION_MICRO__          : the micro version number of the driver.
+        __VERSION_PATCH__          : the patchlevel of the driver; a 0 here
+                                     means 'no patchlevel'.
+        __VERSION_COMMITID__       : the commit ID of the source of the driver
+                                     (attention: it might be <unknown>, if the
+                                     driver was not compiled from a git
+                                     repository)
+        __VERSION_LOCAL__          : the (optional) LOCAL_LEVEL, the user has
+                                     defined.
 
+        __DOMAIN_NAME__            : the domain the host is part of.
+        __HOST_IP_NUMBER__         : the hosts IP number (as a string).
+        __HOST_NAME__              : the full hostname.
+        __MAX_RECURSION__          : the max count of nested function calls
+                                     (this is config.h:MAX_USER_TRACE).
+        __MAX_EVAL_COST__          : the max evaluation cost.
+        __RESET_TIME__             : default interval time between object
+                                     resets.
+        __CLEANUP_TIME__           : default interval time between object
+                                     cleanups.
+        __ALARM_TIME__             : the configured timing granularity.
+        __HEART_BEAT_INTERVAL__    : the configured heartbeat time.
+        __SYNCHRONOUS_HEART_BEAT__ : defined if synchronous heartbeats are
+                                     enabled.
+        __MAX_COMMAND_LENGTH__     : the maximum length a command can have.
+        __EFUN_DEFINED__(name)     : if the efun 'name' exists, this
+                                     macro evaluates to " 1 ", else to " 0 ".
+        __DRIVER_LOG__             : the name of the default debug.log file
+                                     (within the mudlib); undefined if a
+                                     different name has been specified on the
+                                     commandline.
+        __WIZLIST__                : the name of the (mudlib) file from where
+                                     the driver read the initial WIZLIST
+                                     information. It is undefined if the driver
+                                     was configured to not read the
+                                     information.
 
-      __DOMAIN_NAME__    : the domain the host is part of.
-      __HOST_IP_NUMBER__ : the hosts IP number (as a string).
-      __HOST_NAME__      : the full hostname.
-      __MAX_RECURSION__  : the max count of nested function calls
-                           (this is config.h:MAX_USER_TRACE).
-      __MAX_EVAL_COST__  : the max evaluation cost.
-      __RESET_TIME__     : default interval time between object resets.
-      __CLEANUP_TIME__   : default interval time between object cleanups.
-      __ALARM_TIME__     : the configured timing granularity.
-      __HEART_BEAT_INTERVAL__: the configured heartbeat time.
-      __SYNCHRONOUS_HEART_BEAT__: defined if synchronous heartbeats are
-                           enabled.
-      __MAX_COMMAND_LENGTH__: the maximum length a command can have.
-      __EFUN_DEFINED__(name) : if the efun 'name' exists, this
-                               macro evaluates to " 1 ", else to " 0 ".
-      __DRIVER_LOG__     : the name of the default debug.log file (within
-                           the mudlib); undefined if a different name
-                           has been specified on the commandline.
-      __WIZLIST__        : the name of the (mudlib) file from where the
-                           driver read the initial WIZLIST information.
-                           It is undefined if the driver was configured
-                           to not read the information.
-      __MAX_MALLOC__     : the internal upper limit for total memory
-                           usage.
-      __INT_MAX__        : the largest integer number
-      __INT_MIN__        : the smallest integer number
-      __FLOAT_MAX__      : the largest (positive) float number
-      __FLOAT_MIN__      : the smallest (positive) float number
+        __MAX_MALLOC__             : the internal upper limit for total memory
+                                     usage.
+        __INT_MAX__                : the largest integer number.
+        __INT_MIN__                : the smallest integer number.
+        __FLOAT_MAX__              : the largest (positive) float number.
+        __FLOAT_MIN__              : the smallest (positive) float number.
 
-      __LPC_NOSAVE__     : always defined
-      __LPC_STRUCTS__    : defined when struct support is enabled.
-                           Once structs are fully supported, this macro
-                           will always be defined.
-      __LPC_INLINE_CLOSURES__: defined when the 'real' inline closures
-                           are enabled.
-      __LPC_ARRAY_CALLS__: call_other()s on arrays of objects enabled.
-      __BOOT_TIME__      : the time() the driver was started.
+        __LPC_NOSAVE__             : always defined.
+        __LPC_STRUCTS__            : always defined.
+        __LPC_INLINE_CLOSURES__    : always defined.
+        __LPC_ARRAY_CALLS__        : always defined.
+        __BOOT_TIME__              : the time() the driver was started.
 
-    If the ERQ is supported, the following macros are defined:
+        If the ERQ is supported, the following macros are defined:
 
-      __ERQ_MAX_SEND__  : the max size of the send buffer
-      __ERQ_MAX_REPLY__ : the max size of the reply buffer
+        __ERQ_MAX_SEND__           : the max size of the send buffer.
+        __ERQ_MAX_REPLY__          : the max size of the reply buffer.
 
-    The following macros are defined if their associated package
-    has been compiled into the driver:
+        The following macros are defined if their associated package
+        has been compiled into the driver:
 
-      __IDNA__ :      support for IDNA
-      __IPV6__ :      support for IP v.6
-      __MYSQL__ :     support for mySQL
-      __PGSQL__ :     support for PostgreSQL
-      __SQLITE__ :    support for SQLite 3.
-      __XML_DOM__ :   support for XML parsing.
-      __JSON__ :      support for JSON parsing/serializing.
-      __MCCP__:       support for MCCP http://www.randomly.org/projects/MCCP
-      __ALISTS__:     support for alists
-      __PCRE__:       support for PCRE
-      __TLS__:        support for TLS (internal)
-      __GNUTLS__:     if __TLS__: TLS support provided by GnuTLS.
-      __OPENSSL__:    if __TLS__: TLS support provided by OpenSSL.
-      __GCRYPT__:     cryptographic routines provided by libgcrypt.
-      __DEPRECATED__: support for obsolete and deprecated efuns.
-
+        __IDNA__                   : support for IDNA.
+        __IPV6__                   : support for IP v.6.
+        __MYSQL__                  : support for mySQL.
+        __PGSQL__                  : support for PostgreSQL.
+        __SQLITE__                 : support for SQLite 3.
+        __XML_DOM__                : support for XML parsing.
+        __MCCP__                   : support for MCCP.
+                                     http://www.randomly.org/projects/MCCP
+        __ALISTS__                 : support for alists.
+        __PCRE__                   : support for PCRE (always defined).
+        __TLS__                    : support for TLS (internal).
+        __GNUTLS__                 : if __TLS__: TLS support provided by
+                                     GnuTLS.
+        __OPENSSL__                : if __TLS__: TLS support provided by
+                                     OpenSSL.
+        __GCRYPT__                 : cryptographic routines provided by
+                                     libgcrypt.
+        __DEPRECATED__             : support for obsolete and deprecated efuns.
 
 HISTORY
-    3.2.1 added __DOMAIN_NAME__, __HOST_IP_NUMBER__, __HOST_NAME__,
-        __MAX_RECURSION__, __EFUN_DEFINED__().
-    3.2.5 added __COMPAT_MODE__, __NATIVE_MODE__, __EUIDS__,
-        __ERQ_MAX_SEND__ and __ERQ_MAX_REPLY__.
-    3.2.6 added __MAX_EVAL_COST__.
-    3.2.7 added __STRICT_EUIDS__ and made __EUIDS__ standard.
-    3.2.8 added __IPV6__, __LPC_NOSAVE__, __DIR__, __PATH__().
-    3.2.9 added __LDMUD__, __MYSQL__, __DEPRECATED__, __VERSION_MAJOR__,
-         __VERSION_MINOR__, __VERSION_MICRO__, __VERSION_PATCH__,
-         __INT_MAX__, __INT_MIN__, __FLOAT_MIN__, __FLOAT_MAX__,
-        __CATCH_EVAL_COST__, __MASTER_EVAL_COST__, __RESET_TIME__,
-        __CLEANUP_TIME__, __DRIVER_LOG__, and __WIZLIST__.
-    3.2.10 added __MAX_MALLOC__, __MSDOS_FS__, __LPC_ARRAY_CALLS__
-        and __FILENAME_SPACES__.
-    3.3 made __LPC_NOSAVE__ always defined and added __ALISTS__,
-        __MCCP__, __LPC_STRUCTS__, __LPC_INLINE_CLOSURES__, __PGSQL__,
-        __PTHREADS__, __TLS__, __BOOT_TIME__, __ALARM_TIME__,
-        __HEART_BEAT_INTERVAL__, __SYNCHRONOUS_HEART_BEAT__, and __PCRE__.
-    3.3.713 added __IDNA__, __SQLITE__.
-    3.3.714 added __OPENSSL__, __GNUTLS__.
-    3.3.718 added __XML_DOM__.
-    3.3.719 removed __PTHREADS__, AMIGA, MSDOS_FS, __BEOS__  
-		    and added __GCRYPT__.
-    3.3.721 added __FUNCTION__.
+        3.2.1 added __DOMAIN_NAME__, __HOST_IP_NUMBER__, __HOST_NAME__,
+            __MAX_RECURSION__, __EFUN_DEFINED__().
+        3.2.5 added __COMPAT_MODE__, __NATIVE_MODE__, __EUIDS__,
+            __ERQ_MAX_SEND__ and __ERQ_MAX_REPLY__.
+        3.2.6 added __MAX_EVAL_COST__.
+        3.2.7 added __STRICT_EUIDS__ and made __EUIDS__ standard.
+        3.2.8 added __IPV6__, __LPC_NOSAVE__, __DIR__, __PATH__().
+        3.2.9 added __LDMUD__, __MYSQL__, __DEPRECATED__, __VERSION_MAJOR__,
+            __VERSION_MINOR__, __VERSION_MICRO__, __VERSION_PATCH__,
+            __INT_MAX__, __INT_MIN__, __FLOAT_MIN__, __FLOAT_MAX__,
+            __CATCH_EVAL_COST__, __MASTER_EVAL_COST__, __RESET_TIME__,
+            __CLEANUP_TIME__, __DRIVER_LOG__, and __WIZLIST__.
+        3.2.10 added __MAX_MALLOC__, __MSDOS_FS__, __LPC_ARRAY_CALLS__
+            and __FILENAME_SPACES__.
+        3.3 made __LPC_NOSAVE__ always defined and added __ALISTS__,
+            __MCCP__, __LPC_STRUCTS__, __LPC_INLINE_CLOSURES__, __PGSQL__,
+            __PTHREADS__, __TLS__, __BOOT_TIME__, __ALARM_TIME__,
+            __HEART_BEAT_INTERVAL__, __SYNCHRONOUS_HEART_BEAT__, and __PCRE__.
+        3.3.713 added __IDNA__, __SQLITE__.
+        3.3.714 added __OPENSSL__, __GNUTLS__.
+        3.3.718 added __XML_DOM__.
+        3.3.719 removed __PTHREADS__, AMIGA, MSDOS_FS, __BEOS__
+            and added __GCRYPT__.
+        3.3.721 added __FUNCTION__.
+        3.5.0 changed __LPC_STRUCTS__, __LPC_INLINE_CLOSURES__,
+            __LPC_ARRAY_CALLS__ to be always on.
+            removed __ALISTS__
 
 SEE ALSO
-    pragma(LPC), preprocessor(LPC)
+        pragma(LPC), preprocessor(LPC)
