Bearnip ->Lars ->LDMud ->LDMud 3.3 (development) - History See also: LDMud 3.3

LDMud 3.3 (development) - History

Contents: Descriptions, Changelog,

This page lists the full detailed history of the development version of LDMud.

Descriptions

About 3.3.715 (changelog)
New efun tls_refresh_certs() to reload the certificates and certificate revocation information.
New commandline options to handle certification revocations: --tls-crlfile pathname and --tls-crldirectory pathname.
About 3.3.714
Implemented the array/mapping intersection.
Modified a case of undefined behaviour in the creation of the character classification tables during the build. This undefined behavior caused problems with newer GCC versions.
If the driver runs low on memory, it also prints the current object and program in the low-on-memory message.
New efuns hash() and hmac() offer flexible hash and HMAC calculation if the driver is compiled to use OpenSSL (provided by Philipp).
New macros __OPENSSL__ and __GNUTLS__ are set depending on which TLS package is being used.
Corrected a bug with extremely long object names (Bug #466).
Added support for GEN_EMAIL, GEN_URI and GEN_DNS certificates. tls_verify_callback() now prints diagnostics only if the '-d' option was given (thanks, Philipp).
lfun closures now keep track to which program they belong, to avoid ambiguities in case of complex inheritance relationships. This also affects the savefile format: lfun closures are saved with their inheritance path (Bug #443, #444).
If a non-virtual baseclass was inherited multiple times with a virtual class inside the inheritance tree, its members were merged even though they shouldn't (Bug #422).
About 3.3.713
Master function disconnect() receives the remaining input data is passed as the second argument (suggested by Philipp).
The TLS implementation is more robust.
A missing return is noted at runtime only once per function. This is achieved by runtime code modification, but we do that for switch() as well (Bug #430).
Added support for: International Domain Names, SQLite (Bug #431).
Virtual blueprint objects are guaranteed to have their 'clone' flag unset.
Removed the stipulation that CATCH_RESERVED_COST must be twice as much as MASTER_RESERVED_COST, since the master reserve is used automatically anyway.
sscanf(): The new modifier '+' requires the matching of the characters after a field in order to consider the field as matched.
remove_interactive() now preserves the current object (Bug #431).
Corrected the tracedepth handling in efun closures and non-toplevel callbacks (Bug #441).
Private lfuns no longer hide simul-efuns.
Private lfuns can be hidden by public functions without warning, ie. the former are now really invisible to inheritors. This also corrects a crasher with multi-level virtual inherits.
Multiple virtual inheritance of the same program with changing visibility is now handled with a better calculation of the final visibilities (Bug #362).
Calling an unbound lambda cleaned the control stack twice, causing errors (Bug #374).
Only public simul-efuns can be called. This was always valid for sefuns outside the 256-range, but now also applies to normal sefuns as well (Bug #419).
For completeness sake: removed the compilation errors happening when disabling the new inline closures (Bug #423).
present(): Modified the 'n' search behaviour so that the numbering is applied over both inventory and environment together. Before, the numbering was individual in each space, leading to situations where low-numbered objects in the environment were hidden by those in the inventory (Bug #417).
(object.c) Efun function_exists(): The 'FEXISTS_ALL' result also contains information about the function's type, flags, and number of arguments (Bug #410).
Efuns md5()/sha1(): Accept the number of iterations as optional argument (Bug #418).
About 3.3.712
Efun md5() wasn't 64-bit clean (Bug #413).
foreach(): When looping over a mapping with no values, or with only the index being extracted, the loop actually loops over the mapping and not just the indices copied into an array (Bug #388).
Efun set_environment(): clear the RESET_STATE flag of of the moved object's original environment, if any (Bug #387).
Efun md5()/sha1() can now hash arrays of numbers as well (Bug #411).
The string_copy() function checks if the requested memory is actually allocated, throwing an error if not (Bug #397).
Errors during the processing of a fatal() will be recognized and treated as double-fatal (Bug #408).
free_svalue() now recognizes the free of nested structures and de-serializes them to avoid stack overflows (Bug #416).
When re-using a sentence structure for marker_sent, the shadow_ob member wasn't cleared out, causing crashes down the road (Bug #414).
Efun bind_lambda() doesn't ignore unbindable closures when the second argument is missing (Bug #407).
Fixed object reference leaks (Bug #412).
(pkg-tls.c) When accepting a SSL connection, request a client certificate. The driver itself won't check the correctness, but the result will be available in the connection status.
About 3.3.711
Implemented a low/high watermark logic for the backend call to cleanup all objects, in order to prevent the driver from hogging the CPU.
Updates to the OpenSSL interface.
The test for struct equivalence now recurses through member structs; otherwise changes in an contained struct wouldn't be reflected in the containing struct, leading to LPC compilation errors.
to_int() no longer accepts "x<num>" as valid sedecimal notation (Bug #0000402).
Errors during the backend cleanup will now find a consistent virtual machine (Bugs #0000405 and #0000406).
About 3.3.710
Moved the repository from PRCS to Subversion.
About 3.3.709
Oops, I accidentally broke compilation on systems which allow the replacement of the system malloc() function. It should now work again (Bug #0000393).
About 3.3.706-.708
Added new efun pg_conv_string(), courtesy of Philipp.
Added new flag setting '4' to get_type_info() for closures to return the function name of lfun closures (Bug #0000392).
Possibly corrected a refcounting bug in handling prepositions which caused crashers (Bug #0000391).
Since the operators #'&, #'|, #'^ and #'! are now considered efuns, the closure compiler skipped the special treatment of these. As an added bonus of the correction, #'| and #'^ can now take an arbitrary number of arguments, too. (Bug #0000389).
If the number of destructed pending objects exceeds the number of active objects, a cleanup of all objects is triggered. Also, the incremental cleanup in each cycle cleans at least the number of objects destructed in the cycle.
About 3.3.705
runtime_error(), runtime_warning() and heart_beat_error() now receive a flag telling if the error is caught or not (Bug #0000385).
About 3.3.704
Restoring a saved array with one-character operator closures like #'- works again (Bug #0000384).
About 3.3.703
sprintf("%c", 0) returned an empty string "" instead of a string with the 0 character "\0" because internally the system's sprintf() was used for the formatting (Bug #0000378).
About 3.3.702
When printing structs with sprintf("%O"), the output now also contains the names of the structure members (Bug #0000380).
About 3.3.701
The iconv delivered as part of glibc 2.2.5 can get stuck in an endless loop. The configuration script now disables iconv support for glibc 2.0-2.2 (Bug #0000374).
About 3.3.700
There was a problem in the LPC compiler which lead to memory corruption whenever two strings were added in a preprocessor condition. Often enough the corruption was harmless, but sometimes it bit.
About 3.3.699
I was hoping to include fixes for two crashers recently discovered, but no such luck: one is caused by an incompatibility between FreeBSD and ptmalloc which will take some time to nail down, the other one occured only once so far and didn't leave much clues.
When using TLS, the new configuration parameter '--with-tls-path' can be used to specify the installation location for the TLS package.
Corrected a crasher when the TLS certfile locations are printed.
The config macro LOG_NEW_CLEANUP in config.h can be used to enable the logging of the new cleanup calls. Use this if the cleanup seems to hog the CPU to get an idea of how often it is called.
About 3.3.696-.698
Ralph provided a couple of adjustments for FreeBSD 5.4 .
About 3.3.695
Just a little tweaking to the version number determination.
About 3.3.694
Aaaand I had to reintroduce the numeric limit on the number of objects to data-clean per backend cycle, as even with the random factor in the timing sometimes hundreds of objects could become eligible at once.
About 3.3.693
I found the probably reason for the lags experienced by some muds in flaws in the data-cleanup handling (whereas the tunables in the allocators made no difference in my testing):
The data cleanup didn't check whether it still had time to spend or not - as a result the driver could cleanup thousands of objects in a backend cycle even if it had time for only one.
I underestimated the amount of data some muds hold in the default wizlist entry and let the driver clean it up with every object. A mistake, and now the driver applies the cleanup-time timing to the fixed structures as well.
About 3.3.692
input_to() and call_out() no longer accept local references as extra function arguments.
About 3.3.691
Since some muds (but not all) report occasional high CPU loads and lag, I have added a few statistics in order to locate the problem:
If you suspect the ordering of free blocks to be the culprit, try undefining the macros MALLOC_ORDER_LARGE_FREELISTS and MALLOC_ORDER_SLAB_FREELISTS in config.h. If the lags get milder by this, but don't go away completely, the root cause is somewhere else.
In either case, if you encounter such situations, please gather information from status tables, status malloc, and status malloc extstats, and send it to me.
About 3.3.690
Made the last-data-cleaned statistics more useful.
About 3.3.689
The synch heartbeat patch wasn't quite correct: one condition was still reversed, and I had left some debug code in. ...it had been a long day.
About 3.3.688
The synchronous heartbeats didn't initialise properly, and thus never executed.
About 3.3.687
Gnomi provided a patch improving the configurability of the call_out() and heartbeat timing at driver compile time; I added some touches to provide commandline options as well:
The basic timing granularity and the heartbeat interval time can be configured at compile time and with the commandline options --alarm-time and --heart-interval. The values are available in LPC with the macros __ALARM_TIME__ and __HEART_BEAT_INTERVAL__.
Heartbeats can be executed synchronously (all at the same time as far as granularity allows, regardless of when inside one hb interval they have executed last). The commandline options are --sync-heart and --async-heart; if enabled, the macro __SYNCHRONOUS_HEART_BEAT__ is defined.
About 3.3.686
Efun tell_object() can now take a non-string as second argument, and will call lfun catch_msg() in the receiver. This functionality is not exactly essential (as it boils down to a call_other()), but brings tell_object() more in line with tell_room() and say() (Bug #0000354).
Efuns tell_room() and say() now accept mappings, structs, and objects as well as arrays for the catch_msg() mechanism.
About 3.3.685
The statistics for hybrid and hash mappings were off.
The data-cleanup is now controlled solely by the configure time interval. Previous drivers imposed an additional limitation on the number of objects data-cleaned in one backend cycle, which as FinalFrontier demonstrates is too restrictive.
About 3.3.684
Finetuned the slab allocator for better use of the slabs.
Corrected a crasher in the error handling for uncallable closures (Bug #0000374).
Corrected the snoop() manpage (Bug #0000372).
About 3.3.683
regreplace() put the stack into an inconsistent state, causing crashes further down the road.
About 3.3.682
The mapping indexing with strings was not correct: under certain circumstances existing entries would not be found.
Corrected various memory leaks and missing error checks when using unique_array() and regreplace() with faulty closures (Bug #0000370).
About 3.3.681
I reduced the overhead used by the string allocator; in particular strings no longer need two memory blocks and their hidden overhead.
About 3.3.678
Corrected a fatal bug in smalloc/slaballoc which appeared on machines where sbrk() could be used (Bug #0000368).
About 3.3.677
It is now possible to set the maximum number of mapping keys (entries) separately from the number of values held. The runtime limits parameter is LIMIT_MAPPING_KEYS (the former LIMIT_MAPPING is an alias hereto), and LIMIT_MAPPING_SIZE respectively. The configuration and commandline parameters changed accordingly (Bug #0000360).
About 3.3.676
Corrected a crasher in smalloc.
Newly allocated core memory is coagulated with existing free memory where possible (Bug #0000364).
About 3.3.675
Corrected a compilation error when GnuTLS was used.
Removing an interim pending input_to should no longer mess up the telnet state (I hope!) (Bug #0000363).
About 3.3.674
During a (re)compilation of the master object, simul-efuns are disabled to avoid accidental use.
About 3.3.673
The permanent block statistics for slaballoc/smalloc was wrong.
About 3.3.672
Philip added a new efun tls_check_certificate().
About 3.3.671
Oops, the TLS change was premature. Normal operation isn't affected, but I'll undo the change until a better solution is available.
About 3.3.670
Extended the extended string statistics to keep better track of how existance checks are resolved.
New macro __BOOT_TIME__ expands to the time() the driver was started.
Corrected a bug in slaballoc/smalloc when new system memory was allocated with brk().
TLS: When using OpenSSL, the session setup distinguishes between a received connection, and one opened with net_connect().
About 3.3.669
The driver checked the list of destructed objects for deallocatable objects after every execution, which after some time put noticeable load on the CPU when the list got long. Now the driver checks it only every backend cycle (about 2 seconds), and only if before candidates for deallocation presented themselves.
Added statistics for how often the shared string table simplifies the comparison of strings. The statistics are printed as part of the "status tables" and will be removed again at a later point.
About 3.3.668
The large block handler of smalloc/slaballoc can now handle blocks up to 232 words.
The extended memory statistics have been separated out as "status malloc extstats" (Bug #0000358).
About 3.3.667
start_mccp_compress() crashed because of an uninitialized variable (Bug #0000361).
The success code passed to the TLS-handshake callback was wrong: it passed '1' for success instead of '0'.
About 3.3.666
Some leftover debugging code caused the allocator to run on an fatal() on allocation retries (Bug #0000359).
I also removed some compiler warnings in slaballoc (Bug #0000358).
foreach(i : __INT_MIN__ .. __INT_MAX__) now works as well (Bug #0000355).
When a TLS handshake is in progress, the printing of prompts is suppressed.
Using tls_deinit_connection() inside the TLS-failed callback freed the callback memory while it was still executing. The callback is now protected.
It is possible to start an MCCP compression with the telnet machine enabled. This is useful for special applications where the driver knows without negotiation that the other side can receive compressed data.
About 3.3.665
foreach(i : x .. __INT_MAX__) didn't execute the body at all - this has been fixed (Bug #0000355).
About 3.3.664
I noticed in FinalFrontier that over time there are megabytes of free memory tied up in small blocks which isn't used. Avoiding the splitting of blocks does not help; so I tried a different approach: slab allocation.

The new 'slaballoc' allocator clusters small blocks of the same size into so-called slabs, so when allocating new small blocks the allocator tries to fill up one slab before digging into the next one. This applies to both allocation of fresh memory as well as reusing freed small blocks.

Additionally the allocator is capable of returning completely free slabs back into the large memory pool - to avoid thrashing, this is done with a 1 minute delay.

I tested the allocator in a local copy of Evermore, loading all objects, destructing them, and loading them again.

slaballoc is the new default allocator; and while there are a couple of tweakables, the current setup should provide a decent all-round behaviour.
foreach() used on references clobbered memory (Bug #0000353).
About 3.3.663
There is no point in keeping unused shadow and action sentences in freelists: the memory allocator is quite fast, and the memory could be used otherwise.
About 3.3.662
Deep-copying a mapping with shared arrays as keys (e.g. ([ arr, ([ arr ]) ]) )could cause memory corruption due to the premature deallocation of an array (Bug #0000351).
Disabling telnet-negotiations in linemode caused the driver to treat lineends as if in charmode, confusing the higher parsing routines.
About 3.3.661
Corrected two memory leaks:
If program was swapped out, the GC didn't properly clean the references to the program name during the temporary swap-in (Bug #0000348).
The error handling in the regular expressions didn't properly deallocate all intermediate structures (Bug #0000349).
About 3.3.660
Corrected two memory leaks:
If destructed blueprint was held by a self-reference, the GC didn't properly clear the program's name's references, thus leaking the program name until the next GC (Bug #0000099).
And to_string(closure) leaked the program name as well (Bug #0000347).
About 3.3.659
Peng provided an improvement to the mySQL library configuration check (Bug #0000343).
About 3.3.656-.658
The GC forgot to clear out the references of the names of destructed objects, leaving them dangling when the object was deallocated (Bug #0000343).
Exceptions during a restore_object() should no longer leak values or memory (Bug #0000344).
Exceptions during a unique_array() no longer leak the internal structures (Bug #0000345).
And in the extended smalloc statistics the large-free count was still off.
About 3.3.654 and .655
Two changes to improve the memory handling somewhat: when small free blocks are split, the remaining block will have a minimum size larger than the smallest possible small block. This should prevent the free memory from becoming tied up in free 8-byte-blocks which the driver doesn't need.

Second, the data cleanup is now independent from the time of the last reference, as that kept busy objects from being cleant up.

About 3.3.653
Gnomi provided a patch to resolve a hanger in xerq (Bug #0000342).
About 3.3.652
Indexing a 0-width mapping actually returned a garbage value (Bug #0000341).
About 3.3.651
Last change wasn't quite enough: SuSE needed a different searchpath.
About 3.3.649 and .650
A correction the mySQL detection: it should find mySQL on SuSE again.
About 3.3.648
Added the settings file for TimeWarp.
Quickie feature: get_dir() can return access time and mode masks.
About 3.3.647
I (hopefully) improved the ability of the mySQL configuration check to find the installed include files (Bug #0000338).
About 3.3.646
The array range warnings at runtime are now controlled by the pragma range_check, by default they are off.
About 3.3.645
Corrected the extended memory statistics ('status malloc').
The communications statistics now also count the outgoing traffic (debug_info() options DINFO_DATA:DID_ST_PACKETS_IN and DINFO_DATA:DID_ST_PACKET_SIZE_IN).
The 'status tables' command lists the total network traffic size as well.
About 3.3.644
Small corrections to the documentation (Bugs #0000333 and #0000335 ).
About 3.3.643
Mappings over efun closures in some places considered the bound object being part of the efun information - this is inconsistent with the way efun closures usually compare, and would make efun closure comparisons quite useless to boot.
About 3.3.642
An internal updated: refactored the code in the LPC lexer a bit.
About 3.3.641
Evermore had a nasty crash which was caused by lambda closures not being initialized properly. I now modified the driver to internally use just the few dedicated lambda creation functions introduced in 3.3.639 instead of manually creating and initializing the lambdas.
About 3.3.640
The SQL efuns now raise privilege violations ("mysql", "efun name") and ("pgsql", "efun name") (Bug #0000318).
About 3.3.639
The closure changes did not compile under all configuration - this should be corrected now.
Added a couple of internal functions to create closures, so that external creators of closures like FinalFrontier's stringcompiler no longer have to care about the exact closure structure.
About 3.3.638
Closures (ok, non-operator, non-simul efun, non-efun) closures are now annotated with the location of their creation - this should make especially error messages in lambdas a bit more helpful.
Some corrections to manpages.
About 3.3.637
Efun input_to(): New flag INPUT_APPEND allows to queue input_to()s.
About 3.3.636
Another small correction to to_int(): Too large negative numbers are now mapped to INT_MIN, not just -INT_MAX. The LPC compiler itself unfortunately can't be as clever, but at least now emits warnings when encountering such numbers.
More TLS bugfixes from Fippo and Peng (Bug #0000138 and #0000140).
About 3.3.635
Incorporated Gawain's and Peng's patched to GNU tls; including a new efun tls_available() which reflects whether the TLS system could be initialized or not (the originally suggested name was tls_is_available(), but I just don't like the 'is' in names) (Bug #0000082).
About 3.3.634
Added efun regexp_package() to determine the currently active default regexp package.
About 3.3.633
The number parsing was not quite correct yet - Evermore no longer booted with it (Bug #0000327).
About 3.3.632
Corrected a nasty bug in the string handling which could lead to memory being freed which was still used. The error was most likely to surface when a string was first used to create a mapping entry, and then extended in size.
Numbers exceeding the numeric range limit ('111111111111111') are now evaluated as MAX_INT (Bug #0000327).
The warnings about improper array range indices are now controlled by the warn_deprecated pragma (Bug #0000325).
About 3.3.631
Assignments to negative sized ranges now generate an error; indexing an array with an out-of-bounds range generates a warning (Bug #0000325).
About 3.3.630
The TLS package of course needs to use non-collectable memory (Bug #0000323).
About 3.3.629
The garbage collection now zeroes out closures found to be bound to destructed objects. The old behaviour was to change them into 'undef' closures (Bug #0000322).
About 3.3.628
Another correction to the internal memory allocation functions to conform to the C standard.
About 3.3.627
Modified the internal memory allocation functions to conform to the C standard, to make interfacing with external libraries easier (Bug #0000132).
GNU TLS's allocations now use the driver's allocator, to enable the tracing offered by smalloc.
About 3.3.626
Corrected the sending of UPD packets in the Amylaar erq.
About 3.3.625
If privilege_violation() for input_to() and rename_object() destructs the objects in question, the driver should no longer crash (Bug #0000316).
The Amylaar erq errorneously assumed fixed datalengths when handling UDP packets.
About 3.3.623
Corrected a memory leak when no-bang input_to()s are denied by the master (Bug #0000143).
About 3.3.622
When assigning characters to a string, the driver failed to duplicate the target string.
About 3.3.621
Bugfix: The inherited-lfun closures broke the handling of virtual superclasses.
About 3.3.620
An organisational release: I have moved all old bug reports and feature requests out of the driver archive into the bugtracker.

It might be faster for you to download the complete archive than trying to apply this diff.

A man page ldmud.1 is now generated from the driver's --longhelp output if the tool (help2man) is available.
About 3.3.619
Calls to explicitely inherited lfun closures (we need a better name for these :-) ) weren't compiled correctly in lambda()s (Bug #0000145).
About 3.3.617
When the driver was compiled for the old inline implementation, it created invalid bytecode for closures, and also didn't interpret it correctly.
About 3.3.616
Implemented closures explicitely referencing inherited functions (#'super::fun).
About 3.3.615
Efun net_connect(): On multi-homed machines, the created socket is bound to the hostname given at program start (Bug #0000137).
You will also have noticed that updates have been sparse over the last weeks. But after having lived through a stressful production release (it took three weekend-long attempts to get everything in line), my geek enthusiasm at home was a bit subdued.
About 3.3.614
I don't know that this was even supported, but to_int() now recognizes the plus sign again (as in to_int("+34")).
About 3.3.613
to_int() didn't recognize non-number strings and returned garbage values (Bug #0000141).
About 3.3.612
Efun insert_alist() was no longer able to lookup the insertion position for new keys into a key array.
About 3.3.611
Efun to_int() now supports the '0x', '0b', and '0o' bases.
About 3.3.610
Efun present() now accepts the argument form (str, n) to allow for ids with embedded numbers.
About 3.3.609
Ok, ordering the small block freelists was a bad idea - I removed that now. Ordering the large block freelists doesn't seem to make a performance difference, so I keep it in for now to see if it helps with the fragmentation over the long term.
About 3.3.608
Reduced the aggressiveness of the new cleanup scheme - this should reduce the processor load somewhat.
About 3.3.607
The NOECHO hook was called with the wrong number of arguments.
About 3.3.606
Added a number of NULL pointer checks to the regexp code, which should fix the latest crop of crashers (#0000130, #0000135).
About 3.3.605
A bug in the SMALLOC_ORDER_FREELISTS code caused interesting crashes, which in part could be mistaken for problemsin the regexp handling.
About 3.3.604
Corrected callback problems in tls_init_connection() (Bug #0000131).
About 3.3.603
Since Finalfrontier manages to hold a steady 4:1 ratio of used to free small blocks, I added some extended statistics to smalloc to see what kind all these free small blocks are. No guarantee that that will help battle the fragmentation, but it'll be interesting nonetheless. The statistics are as usual available through the debug_info() efun, and as part of the "status malloc" output.
About 3.3.602
The config.h macro SMALLOC_ORDER_FREELISTS instructs smalloc to keep its freelists ordered by block address. This is an experiment to see if the high heap fragmentation can be reduced this way.

If you experience memory problems, deactivate this macro in config.h and recompile (sorry, no configure option).

About 3.3.601
To simplify the adaption of legacy mudlib code with its sloppy handling of types, the pragma no_warn_function_inconsistent can be used to turn off warnings about inconsistent function redefinitions.

In general, however, turning off these warnings is a bad idea, as they usually point to a violation of the function's calling contract.

About 3.3.600
When redefining variables from an inherited program, it is now possible to redefine an inherited nosave variable with another nosave variable (it will still generate a warning, though).
Corrected the handling of pragma warn_deprecated when it comes to affecting the code as it's executed at runtime (Bug #000059, #0000093).
Efun shutdown() now can take an argument which is used as the return code for the driver process.
About 3.3.599
Corrected a crasher in the regular expressions (Bug #0000128).
About 3.3.598
Updating the master object deleted the default regexp selection done by configuration/commandline argument. I changed it so that the 'builtin' default is stored separate from the driver hook setting.
About 3.3.597
Corrected a compilation error when USE_PCRE was not the default.
About 3.3.596
I have added the possibility to use both traditional regexps and PCRE in parallel. The configuration of the driver determines the default package; but by using the new option form of the regexp efuns together with the flags RE_PCRE and RE_TRADITIONAL, the package for a particular efun call can be chosen at will.

Of course the driver also supports a default selection: by default the package chosen at configuration time with --enable-use-pcre (as before) will be used for any given regexp fun call. This default can be further selected at start time with the commandline argument --regexp, or at runtime via the new driver hook H_REGEXP_PACKAGE.

...at least that's the idea.
About 3.3.593
The new input_to() flag INPUT_NO_TELNET modifies the INPUT_CHARMODE behaviour such that only the driver's handling of incoming data is adjusted.
About 3.3.592
Bugfixes galore:
Removed a couple of memory leaks (Bug #0000120).
Using a too large fieldsize or precision in sprintf() could abort the driver due to a numeric overflow (Bug #0000119).
Some operator closures didn't restore properly, and could even confuse the restore-parser completely (Bug #0000118).
When switching out of CHARMODE, the driver accidentally discarded any pending input lines after the current one (Bug #0000123).
About 3.3.591
Corrected the actual struct related error: a reference count error happened whenever an inline closure was compiled with a struct return type. However, to make the error really reproducable, you needed a program with a private struct, an inline closure returning that struct, and syntax errors in that program.
About 3.3.590
Corrected the last patch, which caused the LPC compiler to generate faulty bytecode.
When struct types were used as function returntypes, the LPC compiler was likely to clobber memory due to faulty reference counting. Unfortunately the correction now introduced a memory leak... C++ sounds more appealing with every day.
About 3.3.589
Removed a C99 construct which broke compilation under C90 compilers ... I hope (Bug #0000116).
About 3.3.588
Corrected a few compiler warnings.
About 3.3.587
Calls from destructed objects to other objects now elicit a warning (Bug #0000113).
When using PCRE, the driver now automatically uses the system's PCRE library, using the builtin package only if (at configuration phase) no PCRE is found of if the builtin is requested explicitely.
About 3.3.586
Corrected a number of memory leaks (Bug #0000114).
About 3.3.585
Float variables without an initializer are now properly initialized to float-0 instead of number-0.
Corrected a nasty memory leak in MCCP - patch supplied by Alwin (Bug #0000111).
About 3.3.584
An error while loading an object with a too-long filename could cause a crash.
About 3.3.583
Corrected a memory leak when efun garbage_collection() can't open its logfile.
Corrected the strings and small blocks statistics.
About 3.3.582
The range given by the macros __FLOAT_MIN__ and __FLOAT_MAX__ was too small (Bug #0000101).
About 3.3.581
Corrected a crasher in the call_out code.
About 3.3.580
funcall(#'->, ({}), "") crashed the driver (Bug #0000097).
The traceback collection now uses unlimited arrays (Bug #0000097).
to_array('symbol) caused a crash (Bug #0000097).
An error in save_{object, value}() followed by a GC left behind an invalid pointer (Bug #0000097).
About 3.3.579
Corrections in the XERQ to make it more robust when used to start subprograms.
If an ERQ callback accepts an array, the numbers in that array are now all positive in the range 0..255.
About 3.3.578
Improved the verbose debugging of XErq.
Efun input_to() didn't properly test its arguments (Bug #0000098).
If a call-out function causes an error, all further call-outs for the same user in this cycle are re-schedule to the next cycle. This avoids a loop due to eval-cost resets then the function causes a too-long-evaluation (Bug #0000095).
About 3.3.577
Corrected a number of memory leaks caused by runtime errors (Bug #0000096).
About 3.3.576
Warnings printed during the generation of a closure crashed the driver (part of Bug #0000091).
About 3.3.575
The 'missing return' warning is no longer triggered if a function ends with raise_error() or throw().
Efun input_to(): the check for a change in the CHARMODE mode did not properly check if the command_giver was valid - this could cause a segfault if input_to() was used without an interactive (Bug #0000090).
A too-large allocation (like in " "*MAX_INT) no longer crashes the mud unless done in SYSTEM allocation mode (Bug #0000086).
Allocating an array enough elements to exceed the internal numeric limits (part of Bug #0000091).
About 3.3.574
The 'public foo() shadows private bar()' warning no longer warns about the __INIT() function (Bug #0000085).
Removed a memory leak in ctime(vector) (Bug #0000087).
In catch(), the check if there are enough evals left was done before the reserve had been added to the eval cost. Since the handling for this case was changed to a runtime error, this caused the error handler to subtract a reserve which wasn't there, in the process messing up eval cost handling (Bug #0000088).
The restoration of eval limits didn't handle the case of a fixed eval cost (USE_EVAL_COST > 0) correctly if the process had used more than the given amount: the total eval cost was set to the given amount, instead of adding the amount to the previous eval cost value (Bug #0000077).
About 3.3.573
A shadow executing remove_action(1, shadowee) crashed the driver.
About 3.3.572
If a message or command is too long, the error messages prints the begin of it as a debugging aid.
About 3.3.571
The tracedepth wasn't calculated correctly.
About 3.3.569-570
Updated PCRE to version 4.5.
About 3.3.568
The LPC symbol __MAX_MALLOC__ now reflects the actual maximum allocation limit in effect, not the default value selected during configuration.
About 3.3.567
Improved the check in input_to() for a change of the NOECHO/CHARMODE mode while the telnet machine is disabled.
About 3.3.566
Corrected a fatal error in the handling of the memory reserve: freeing the reserve used the wrong function and thus crashed the driver.
About 3.3.565
Efun save_object() now really removes a trailing ".c" from a filename.
Efun net_connect() should now compile with IPv6 enabled.
About 3.3.564
Corrected bugs in the implementation of set_limits() and limited() which messed up the LPC stack.
About 3.3.563
The new limit LIMIT_COST can be used to control the evaluation cost of a limited() execution.
When using set_limits() and limited(), the resulting limits are passed as argument to the master::privilege_violation() call.
About 3.3.562
Small changes: removed some gcc 3.4 incompatibilities, and some warnings from the lp-245 mudlib.
About 3.3.561
The 'public shadows private' warning should be triggered now only when genuinely private functions are involved.
About 3.3.560
The modifier reserve expr can be used to modify the eval tick reserve in catch().
About 3.3.559
The compiler now warns if a privately inherited function is shadowed by a publicly inherited one. If this produces too much output, I'll probably introduce a pragma to control the warning.
If a catch() doesn't have enough eval ticks left to even execute, this error is now thrown from 'inside' the catch(), streamlining the handling for the caller.
About 3.3.558
When restoring a struct, the gamedriver no longer insists that the sizes match, but instead restores as many members by position as possible.
Corrected a typo in the configure script.
About 3.3.556
The efun member() and rmember() can take a 'start' parameter for their search.
About 3.3.555
When USE_AVL_FREELIST was active (the default), the AVL tree could get clobbered, causing the driver to crash.
About 3.3.554
The efun deep_inventory() now takes a 'depth' parameter to somewhat filter the results.
About 3.3.553
Oops, the combination of AVL nodes and freelists for large free blocks in smalloc was never activated.
Small blocks recycled from the their freelist never had their 'collectable' flag set. No direct harm, except that the GC couldn't find these blocks if they ever got lost.
When writing savefiles, only the names of structs use the shared string notation; normal strings are always printed out for readability.
About 3.3.552
The H_NOECHO hook is no longer called if the target object is destructed.
Fini donated a Perl snippet to parse LPmud savefiles.
About 3.3.551
Runtime warnings now also call the master lfun runtime_warning().
About 3.3.550
Corrected a compilation problem with MALLOC_TRACE defined.
About 3.3.549
Efun get_type_info() can now return the name of the defining program for a lfun/context closure.
Made sure that during a GC all string references are cleared - so far this didn't happen, possibly causing string leaks going unnoticed.
About 3.3.548
If you use Linux or FreeBSD, you need this patch to get the stdint.h to work. ...or buy a Mac :-)
About 3.3.547
The configuration now tests for the existance of C99 include stdint.h (required by the SHA1 code), and provides a replacement if it's not available.
About 3.3.546
Corrected two late-night-induced compilation problems.
About 3.3.545
Let's see if this works: when pthreads are enabled, smalloc will no longer replace system malloc(), even if it could. Also, the thread-related memory allocations are always done by system malloc() and not the driver's allocator. I hope that this way we can finally use TLS in the threaded version of the driver.
It is again possible to work without an simul-efun object altogether by returning 0 from the master::get_simul_efun() lfun.
When an interactive is forcefully disconnected, the MCCP connection is also forced to shutdown.
About 3.3.544
I managed to break unique_array() in 3.3.539 - sorry!
About 3.3.543
Corrected a memory leak when using PCRE.
If the simul-efun object can't be reloaded at runtime, a normal runtime error occurs - not a driver shutdown.
About 3.3.542
Corrected a bug in the string handling which caused the driver to not find mapping entries.
Menaures provided updates for the German manpages.
About 3.3.541
Efun tls_init_connection() is now able to complete the TLS handshake in the background, thus avoiding blocking the whole driver. Optionally it can be provided with a callback function which is called once the handshake is complete (successfully or not).
About 3.3.540
Corrected a problem in the mapping key lookup connected to the more aggressive string tabling.
Strings can now store their hash value (internally) so that the hash doesn't need to be computed more than once.
About 3.3.539
Efun unique_array() crashed on using a name-based callback.
Strings can now be made tabled ("shared") in place, removing the the need for memory allocations in the process.
Assigning or transferring strings no longer make the strings tabled - since strings have refcounts and are made tabled on a regular basis, this former memory saving step is no longer required.
Lynx provided an updated version of the manpage for inheritance.
About 3.3.538
tls_query_connection() now returns FALSE when used on non-interactive objects, instead of raising an error.
About 3.3.537
The warning about missing return statements is now controlled by the pragma '(no_)warn_missing_return' (by default it is active). Also, the driver tries to perform the check at compile time, using the runtime warnings as fallback.
While I don't know why anybody wouldn't want the new inlines :-), I corrected the compilation errors for the old-style inlines.
About 3.3.536
When not using pthreads, the TLS implementation retries the opening handshake should it fail with the equivalent of an EAGAIN.
About 3.3.535
Corrections to convert_charset(): the efun crashed when an empty string was passed in; and the libiconv detection in configure was not perfect.
About 3.3.534
I had some time at work, so I implemented the idea from Bug #0000053: large free blocks of equal size are kept in a linked list hanging of the AVL node for this size of blocks. The idea is to improve the locality of the free large block handling - but only practical use will show if it's any use.
About 3.3.533
Efun convert_charset() got the conversion direction wrong.
About 3.3.532
Added corrections for AIX/Visual Age 6.
Efun reverse() can now reverse the bits in an integer.
Menaures provided a new version of lpc.xml.
int-=float subtracted a random value instead of the given float.
About 3.3.531
New efun convert_charset() converts a string between character sets.
Efun make_share_string() is deprecated, as the driver is using shared strings (even if not tabled) all the time now.
About 3.3.530
Changed the memory dump format so that all the information for a memory block is printed on one line.
About 3.3.528 and .529
net_connect() can now open IPv6 connections.
Added a few more german Efun manpage translations. If the patch chokes on this bit, I advise to get the full archive.
New efun reverse() to reverse the content of a string or array - supplied by Ralph, thanks!
About 3.3.527
Corrected a compilation problem under Linux.
About 3.3.526
debug_info(DINFO_DUMP, "memory") writes a list of all allocated memory blocks into a file, by default mudlib/MEMORY_DUMP. Intention is to aid the investigation of high memory usages - however, you may want to add sanity checks (for example in valid_write()) to make sure that Joe Everywizard cannot call this function at whim. Currently this dump is supported just by the smalloc allocator.
About 3.3.525
Corrected a compilation problem with the SHA1 implementation.
Active objects were never cleant up at all.
About 3.3.524
Improved the detection of MySQL on Mac OS-X (I hope), and corrected a typo in mudlib/sys/lpctypes.h.
About 3.3.521-3.3.523
In a lambda closure, executing a return while computing arguments for a varargs efun caused the driver to raise a fatal error in DEBUG mode. As such code is legal, though senseless, I changed the fatal error into a runtime warning (Bug #0000051).
New efun sha1() to compute a SHA1 message digest (thanks, Fippo!)
Efun write_file() can now delete a file before writing to it.
About 3.3.520
A suggestion from BatMUD: unique_array() The separator function can now be a closure, and can also be given extra arguments.
About 3.3.519
I had to restrict '&(struct->member)' type constructs to a single level of member lookups because I couldn't really figure out how to get the lvalue generation right over multiple levels.
About 3.3.518
sprintf(), printf(): Format specifier '%b' prints a number in binary notation (thanks, Ralph!).
About 3.3.516
I had to undo the numeric range change as it interfered with the bitflags we use. LPC needs a proper unsigned type for this kind of thing.
About 3.3.515
Heaven7 is using LDMud as native driver - updated the settings/heaven7 accordingly.
Constant numbers exceeding the numeric range (like 2147483648 on a 32-bit machine) cause a runtime error.
About 3.3.514
The closure typecode returned by get_type_info() is now identical to that returned by the 3.2 driver.
However, you are strongly advised to use the newly added symbolic constants in mudlib/sys/lpctypes.h instead of the numeric values.
About 3.3.513
Using input_to() without a command giver crashed the driver.
Corrected a compilation problem when TELNET_DEBUG was enabled.
The erq/xerq checked the wrong error variable when deciding whether to retry a DNS lookup or not.
Under *BSD, using ptmalloc as malloc() replacement caused a deadlock when threads were enabled - now, ptmalloc won't be used as malloc() replacement on *BSD.
About 3.3.512
The configuration should now detect platforms without a trunc() library function.
Corrected the ERQ_LOOKUP in standard erq.
Added lots of german efun manpages.
Added an example for non-blocking DNS lookups from LPC.
About 3.3.511
input_to() should now be able to put the driver into charmode even with telnet disabled.
About 3.3.510
Added the experimental efun enable_telnet().
About 3.3.509
function_exists() and variable_exists() now check if the object is destructed, instead of crashing (Bug #0000038).
If the H_RESET/H_CREATE_* hooks are defined by name, static functions are found as well.
Made the driver more palatable for SunOS 4.1.
About 3.3.508
restore_value() now checks for and rejects extraneous characters after the '\n' delimiting the value string (Bug #0000039).
Casts to type 'mixed' are exempted from generating an "empty cast" warning (Bug #0000041).
The configuration now checks for libnsl as standard system library - it is needed for ERQ on Solaris (Bug #0000012).
About 3.3.507
Implemented mapping &= mapping and mapping &= vector.
Allowed longer program names in tracebacks.
About 3.3.506
Corrected a sanity range-check in the LPC compiler.
About 3.3.505
The internal declaration of m_entry() specified an incorrect result type.
Updated the random generator to the latest version of the Mersenne Twister.
About 3.3.504
More string handling improvements.
Corrected an editor bug: the faulty commands 'quit'/'Quit' are caught before the text buffer is cleared (#0000046).
Corrected an editor bug: giving 'Z' at the end of the text buffer followed by two 'd' corrupted the internal text storage, which could cause crashers (#0000045).
About 3.3.503
Tweaked the string handling, hopefully improving the memory usage.
About 3.3.502
If H_COMMAND named an non-existing lfun, the driver now raises a proper error instead of crashing..
About 3.3.501
Added fix for a crasher by Alwin - thanks!
About 3.3.500
When sending data over a congested socket, the Xerq a lost and dropped data as result of a bug in the data queuing (thanks, Fantom!).
About 3.3.499
net_connect() wasn't prepared for errors during the LPC logon handling, and tried it over and over again.
About 3.3.498
net_connect() prematurely closed sockets for which it was still waiting on for a connection to succeed.
About 3.3.497
net_connect() crashed the driver.
About 3.3.496
Corrected efun variable_list(): Filtering for static variables didn't work.
Added efun net_connect() courtesy of Muve - have fun testing!
About 3.3.495
It's been a while... what can I say, days have been busy.
Fiona provided updates to the XErq socket daemon code and the telnet negotiation.
sprintf() with the formats %O and %Q now prints floats always with a decimal point.
About 3.3.494
When doing a foreach() over a varargs parameter, the LPC compiler got confused and generated code for a reference-foreach().
About 3.3.493
More improvements to the library detection in configure - I hope.
Retrieving the full socket address from query_ip_number() didn't work.
About 3.3.492
Corrected (hopefully) a configuration problem for Avalon.
About 3.3.491
The max_commands setting was defaulted to 0 instead of -1 for new connections.
Officially documented that a new interactive connection is bound to the master at the time of master::connect().
The macros __RESET_TIME__ and __CLEANUP_TIME__ always used the configured values, ignoring commandline overrides.
New efun master() to return the master object.
About 3.3.490
Corrected a crasher in set_max_commands().
About 3.3.488 and .489
Added a third argument to debug_info(DINFO_OBJLIST) to return multiple objects; this can be used to simulate MudOS' objects() efun (yes, this was originally listed for 3.3.486, but that was not true).
New efuns set_max_commands() and get_max_commands() to control the command rate of an interactive connection.
Pragma (no_)warn_empty_casts to control the warnings for casts of an value to its own type.
to_array(string) now treats the string characters as unsigned.
The call_other() on arrays of objects is now configurable; if enabled, __LPC_ARRAY_CALLS__ is defined.
About 3.3.487
The correction to the function handling missed a couple of subtleties, which are corrected in this patch.
__INIT() is no longer visible as simul-efun.
About 3.3.486
Removed a crasher when a private lfun shadowing a public sefun was virtually inherited twice in parallel.
Removed a crasher when a walk_mapping() over a mapping deleted elements from the very same mapping.
Passing 0 as argument to set_{combine,connection}_charset() re-establishes the default charset.
New efuns get_combine_charset() and get_connection_charset().
Experimental: the number of commands (line or char) of a connection is now limited to 10 per second. This is meant as a safety measure for muds using lots or charmode connections - if it works out, I'll make the feature permanent and more configurable.
About 3.3.485
Removed a crasher when printing anonymous structs with no members.
About 3.3.484
Removed a problem in creating local context lvalues, which caused map( arr, (: mm[$1]; :) ) to fail.
About 3.3.483
Removed a crasher in the lexer.
About 3.3.482
Postgres on SuSE 8 systems is now detected.
Also removed a number of signed/unsigned compiler warnings.
About 3.3.481
When mySQL/PostgreSQL support is requested, but not implemented on the machine, the configure script still enabled the respective packages, causing the driver build to fail. This should no longer happen.
About 3.3.480
Redefinitions of LPC preprocessor macros now list the file and line of the original definition.
About 3.3.479
Added statistics for the small block defragmentation.
About 3.3.476-.478
Added support for OpenSSL as alternative to GnuTLS. As there are hardly any usable docs for OpenSSL (at least none that I could find), I had to copy&paste from demo programs - so expect a lot of bugs.
About 3.3.475
New commandline options --tls-key and --tls-cert to define the x509 key- and certfile for the TLS package.
About 3.3.473 and .474
Gawain provided a TLS implementation using GnuTLS.
.474 corrects a couple of compilation errors (it took me the good part of a day to install GnuTLS after I checked in .473, so I didn't notice before).
About 3.3.472
Casey provided a change to variable_list() to return the value of the variables as well.
About 3.3.471
The mySQL package now checks if it has been compiled against the client the driver was actually linked with.
About 3.3.470
Reduced the computational expense of the small block defragmentation (I hope!).
Saving object values in the old format still used the new syntax for shared strings.
About 3.3.469
A single missing '|' in the smalloc allocator caused a flag to be clobbered and occasionally the driver to crash.
About 3.3.468
Corrected a crasher in the small block defragmentation, and reduced its overhead.
About 3.3.467
If a #pragma requires the return type of a function, the error message now prints the correct name of the pragma.
In charmode, CR and LF are considered normal data characters.
About 3.3.466
Reduced the number of times check_map_for_destr() is called during mapping compaction.
About 3.3.465
I implemented a lazy defragmentation scheme for the small blocks in the smalloc allocator.
Oh, and the dhrystone modules reported a result which was by the factor 10 too low.
About 3.3.464
Improved the recognition of the crypto libraries.
Added some experimental code for machines with 64-bit longs. This however will be a long-term development.
About 3.3.463
Corrected compilation errors in sysmalloc and ptmalloc.
About 3.3.462
Embarassing: -= errorneously raised an argument error when subtracting an int from an int.
About 3.3.461
Made the cast checks more informative.
About 3.3.460
Casts with no effect (like casting an int value to int) now generate a warning.
The operators -=, *= and /= can now operate on int x float values, yielding a float result.
About 3.3.459
Bugfix: Subtracting arrays of closures from each other now actually identifies identical closures.
About 3.3.458
Overflowing the value stack during a secure apply (e.g. during an implicit master call) could crash the driver in the error recovery.
About 3.3.457
Corrected a compilation problem when using ptmalloc, and also implemented Gawain's patches for the lock logic in that allocator.
About 3.3.456
Improved the stack/heap check to better cope with machines with non-traditional memory layout.
Character constants with the 8th bit set now appear as positive numbers.
New macro __MAX_MALLOC__ returns the internal upper limit for the total memory usage.
About 3.3.455
Removed a memory leak in efun printf().
About 3.3.454
Made the error handlng more robust against recursive out-of-memory conditions.
About 3.3.453
Improved the handling of CRLFs when restoring values.
Oops, I accidentally disabled the strong type pragmas some time ago.
About 3.3.452
Added the modifier publish zu catch(). It causes catch() to call master::runtime_error() for a caught error, which is useful if you have an error database running from the method.
About 3.3.451
When using pthreads, the flushing of the remaining data on closing of a connection was not quite correct.
Restoring values now accepts CRLFs as line end convention.
About 3.3.450
In the editor, only consecutive 'z'/'Z' commands do not reprint the current line; a 'z'/'Z' after any other command does.
When removing an interactive connection while using pthreads, the remaining unset data is flushed out before the connection is closed.
About 3.3.449
Corrected a crasher in PCRE routines: repeated replacements within one string used illegal arguments.
About 3.3.448
If during a funcall(lfun-closure) the object holding the lfun is destructed, the driver could crash under adverse circumstances.
About 3.3.447
Added support for the MCCP protocol, kindly donated by Finalfrontier.
About 3.3.446
The PostgreSQL code could crash in a GC.
The small-free-blocks statistics was wrong.
About 3.3.445
Added support for PostgreSQL. Please test it and let me know what is missing.
About 3.3.443+.444
The save_object() and save_value() efuns now allow to specify the format of the saved data.
About 3.3.441+.442
The smalloc allocator is now able to merge adjacent free small blocks right when they are freed, eliminating the need for the expensive memory consolidation.
If the GC finds lost memory blocks of unknown type, their data is printed as proper hexdump to the gc log.
About 3.3.440
A preparationary patch on the way towards a more efficient defragmentation of small blocks in smalloc. This patch cleans up some code and introduces an (internal) minimum allocation size.
About 3.3.439
The efuns filter() and map() can now be applied on strings.
About 3.3.438
A runtime error in a heartbeat no longer aborts the heartbeat cycle.
debug_info(): Added DID_ST_BOOT_TIME to the DINFO_DATA: DID_STATUS result.
wizlist_info(): The evalcost statistic is now split into 'ticks' and 'gigaticks', and a second non-decaying evalcost statistic has been added.
About 3.3.437
Made the use of set_this_object() clearer in the manpage.
Efun remove_action() can now also remove all actions defined by an object.
About 3.3.436
Self-referential struct types could crash the GC when the defining program was destructed.
About 3.3.435
The driver now logs which erq executable it tries to start.
About 3.3.434
The automatic cleanup didn't properly handle swapped out programs, causing the swapped data to hold invalid pointers.
About 3.3.433
The efuns mkmapping() and to_struct() can now convert between mappings and structs.
About 3.3.432
The switch() now demands a syntactic block (statements enclosed in {}) as body, not just a statements. This deviates from the C syntax, but as the LPC compiler doesn't compile switch bodies of a single statement well, this will help to prevent malfunctioning code (at least until the compiler has been improved).
remove_input_to() now restores the proper noecho state after removing a pending input_handler.
About 3.3.431
While a set_this_object() is in effect, the driver now actively prevents function calls by address and accesses to global variables. Both were already illegal, but still possible and could cause strange malfunctions or even crash the driver.
About 3.3.430
Removed a crasher when assignments were made to non-existing struct members.
About 3.3.429
When saving values, shared strings now use the <n> notation - this is mostly useful to reduce the size of struct value sets.
About 3.3.428
New efun m_entry() to return all values for mapping entry at once (the counterpart to this efun is m_add()).
New efun strrstr() can search strings within strings backwards.
Operator & can intersect mappings with other mappings and arrays.
Corrected the restoring of saved operator closure #e:,.
About 3.3.427
New efun rmember() to search arrays and strings from the end.
Modifier # for sprintf() types %O and %Q to print the values in a compact format.
About 3.3.426
Saving struct values now includes the defining program's name in the data, so that the restoring can be done across objects.
About 3.3.425
Made a couple of corrections to the data cleanup code; this also should fix the 'memory freed twice' crasher during the GC.
Removed a memory leak in find_call_out()/remove_call_out().
About 3.3.424
Corrected a bug in saving shared variable closure values.
New commandline option --filename-spaces to allow space characters in filenames.
About 3.3.423
Removed a memory leak in the mapping code.
About 3.3.422
The cleanup algorithm accidentally freed closure driver hooks if they were still bound to destructed objects.
About 3.3.421
Corrected a build problem concerning an interaction between MALLOC_CHECK and MALLOC_TRACE: the latter requires the former.
About 3.3.420
New configuration option --enable-malloc-sbrk to selectively allow the memory allocator to use sbrk() instead of malloc() where available (default is to allow sbrk()).
About 3.3.419
Corrected a problem in the GC: the hash part of mappings wasn't properly marked as 'referenced'.
About 3.3.418
Removed a crasher in the struct code.
The garbage collector can now collect mappings with a hash part (I hope).
Gawain added more locking code to the ptmalloc allocator.
About 3.3.417
I gave the LPC compiler the ability to reactivate old struct definitions, if they match the new ones in name, defining program and internal structure. This way accidental updates of for example an /std/types object won't break the whole mud.
About 3.3.416
The variable swapper got out of sync when encountering mappings with destructed objects as keys. This wasn't a problem before because mappings were compacted faster than they were swapped.
About 3.3.415
Configuration option --with-optimize to set the optimization level in the generated Makefiles. Settings are: no, low, med or high.
There is a problem in the driver which manifests itself in corrupt data in variable swap blocks. As this is my only clue at the moment, I have added some sanity checks to the swapper.
About 3.3.414
I modified the mapping compaction conditions: a mapping is compacted (outside of a GC) when entries haven't been added or deleted for at least 10 minutes, and if either more than half of the condensed entries have been deleted, or if the number of hashed entries exceeds the number of condensed entries.
About 3.3.413
Since the driver already cleans up the objects in the backend, the mapping compaction might as well be done then, too. So: no extra 'dirty mapping list' anymore.
About 3.3.412
An experimental change to the internal memory pools: by restricting the maximum size of one of their blocks, I hope to reduce fragmentation in the large block heap.
About 3.3.411
The GC with enabled MALLOC_LPC_TRACE crashed if a mapping or vector was owned by the 'default wizlist entry'.
About 3.3.410
I modified the mapping compaction such that a dirty mapping is compacted if either more than 10 minutes have passed since the last change, if more than half of the condensed entries have been deleted, or during a GC. The idea is to avoid frequent reallocations for busy mappings, especially big busy mappings where the compaction can cause severe memory fragmentation issues.
About 3.3.409
The OBJ_DUMP now also contains the object's creation times.
When printing an alien-lfun closure, the object the closure is bound to is printed in [].
Consecutive 'z' or 'Z' commands in the editor no longer repeat the previous current line.
About 3.3.407 + 3.3.408
New configuration option --enable-malloc-sbrk-trace to enable a log of all system memory requests, including the stats for the memory allocation requests causing them. The intention is to help debugging muds with high system memory usage.
About 3.3.406
Corrected a bug in the garbage collection of structs, which could lead to memory corruption.
Corrected a memory leak in efun m_add(), which happened when existing entries with no-scalar values were overwritten.
About 3.3.405
Two new efuns: variable_list() and variable_exists().
About 3.3.404
Improved the error messages for when mapping[a, b] is used with wrong types at runtime.
About 3.3.403
Corrected a problem in the interaction of the GC and the swap memory buffers, which could lead to memory corruption.
About 3.3.402
Made the internal strbuf routines more resilient against out-of-memory conditions.
Improved the DEBUG: MEM diagnostics when memory blocks are just re-allocated.
About 3.3.401
Corrected a bug in the struct code which could cause structs to be dereferenced prematurely.
About 3.3.399 + 3.3.400
Some muds are still using enourmous amounts of system memory for no apparent reason. I have now added a diagnostic to every esbrk() memory request, logging the location and originally requested size to stdout. The diagnostics start with the text "DEBUG: MEM ", and you should at least define MALLOC_TRACE to make them useful.
About 3.3.398
Corrected a compilation problem.
About 3.3.397
Macro __MSDOS_FS__ is defined on systems using the MS-DOS filesystem conventions.
About 3.3.395 + 3.3.396
I have the suspicion that the swapper and the file-reading efuns (read_file(), read_bytes() and restore_xxx()) cause an increase in the total memory allocation when confronted with large data: the necessary buffers can't be allocated from the existing memory pool due to fragmentation.

I have therefore added persistent buffers for these efuns, which only increase in size, but aren't deallocated except by a GC.

About 3.3.394
Simplified the small block allocator somewhat: since the allocator has been enable to handle 'oversized' small blocks, the special case of 'unused space' in the current small chunk is no longer necessary.
About 3.3.393
I reduced the upper limit for small block sizes, and also defragment the small freelists automatically, hoping to achieve a better reuse of freed memory.
sprintf() now works with a static format buffer, instead of continuously allocating and deallocating one from the dynamic memory.
About 3.3.392
When parameter min-small-malloc is used, the allocator now makes sure that this block is allocated directly from the system as well.
About 3.3.391
Gawain provided first code to make the ptmalloc-GC threadsafe. Have fun testing!
About 3.3.390
Inverted case ranges like 100..50 have always been illegal, but so far the LPC compiler just ignored them instead of generating an error message.
About 3.3.389
Corrected a compilation problem of ptmalloc with x86-gcc.
About 3.3.388
The last patch introduced a fatal error into the break and continue handling - this is corrected now.
About 3.3.387
The LPC compiler choked on break and continue when used in large programs, and silently corrupted the generated bytecode.
Gawain has brought the GC in ptmalloc into alpha-status: it can be tested, will likely crash, and it isn't threadsafe yet.
About 3.3.386
I finally found (with help) that insidious bug in the memory allocator, which requested more and more memory from the system even though there were megabytes available in the freelists.
About 3.3.385
Assignments to multi-level struct references didn't work.
About 3.3.384
Runtime warnings leaked the filename of the affected object.
About 3.3.383
The reference count of struct typeobjects is no longer changed by the swapper. This avoids premature freeing of typeobjects with swapped-out values, and also avoids a nasty interaction between swapper and garbage collector.
About 3.3.382
Corrected a small, but fatal error in the memory allocator.
About 3.3.381
Improved the error messages when an expected structure is not found at runtime.
It is no longer possible to drive a struct from a struct prototype (this also catches struct Foo (Foo) { ... }).
About 3.3.380
Restoring plain lfun closures no longer worked.
About 3.3.379
Small correction to the operators &&= and ||=.
About 3.3.378
I removed the configuration option INITIALIZATION_BY___INIT. In it's stead, it is now possible to select on a per-program basis if a clone's variables are initialized by __INIT(), or by copying the current values from the blueprint. The default behaviour can be selected during configuration, or with a commandline argument.
See initialisation(LPC) for more information.
About 3.3.377
The LPC parser didn't compile on all systems.
About 3.3.376
The configuration check for pthread_atfork() always failed.
Removed a compilation problem.
About 3.3.374+.375
Implemented proper short-circuit evaluation for operators &&= and ||=.
About 3.3.373
Corrected a string reference count bug in andor//xor_bits(), which over time could cause memory corruption.
About 3.3.372
Gnomi pointed out historic misfeature: a #pragma strict,strong_types in an included file was valid only until the end of the include; the including file saw no change. I can't seen any sense in this, so I removed this behaviour.
About 3.3.371
Saving/restoring objects didn't handle shared closures, which could lead to endless recursions.
The context for inline closures wasn't compiled correctly when local variables were used in the initialisation expressions.
About 3.3.370
Improved pthreads support for platforms without pthread_atfork(), like FreeBSD.
About 3.3.369
Swapping structs during a GC needlessly triggered a sanity check.
About 3.3.368
Removed a fatal bug in the rexalloc() implementation.
About 3.3.367
The typetracking for assignments to struct members was faulty.
About 3.3.366
Corrected the allocation statistics, which could lead to false 'MAX_MALLOCED limit reached' aborts.
About 3.3.365
Efun member() crashed when passed a struct as second argument.
Implemented struct-lookups on mixed-typed expressions.
About 3.3.364
The configuration option --with-malloc didn't quite work.
About 3.3.363
Self-referential structs caused the GC to crash.
About 3.3.361+.362
Found an implementation restriction in replace_program(): If the replacement program contains virtually inherited variables, it must be the first inherited program for the replacement to work. The efun now checks for this condition.
About 3.3.360
Well, *blush*, seems that I was a bit too enthusiastic in the last announcement - Gawain is working on bringing the GC to ptmalloc, and he's making great progress; but it's not finished yet. Still... Yay!
Gawain fixed a fatal bug in the GC part of ptmalloc.
About 3.3.358+.359
Gawain has added GC support to the ptmalloc allocator - this brings the pthreads-using drivers to the same level as their single-threaded incarnations.
If no specific allocator is selected during the configuration, the script will automatically select the proper allocator to suit the pthreads setting.
About 3.3.357
Bug corrections: indexing one-past the end of an empty string didn't work; the lexer got confused with line contiuations in preprocessor conditionals under Windows.
It is now possible to redefine a function using more arguments.
About 3.3.356
Corrected two more fatal struct errors.
About 3.3.355
Just a small internal improvement.
About 3.3.354
Removed the configuration option 'no-blueprint', as the code has been proven stable.
About 3.3.353
Corrected two more errors in the compilation of struct code.
About 3.3.352
The result array for wizlist_info() was allocated too small, eventually crashing the driver.
Removed compilation errors when __INIT was not used.
About 3.3.351
The ptmalloc module didn't compile on all systems.
New configuration option malloc-check (enabled by default) allows the allocator to implement simple checks. Currently smalloc uses this to tag allocations with magic words, catching basic memory misuses.
About 3.3.350
Removed a couple of refcount errors in the struct handling.
About 3.3.349
Many mudlibs like to index one past the end of a string, which in the older drivers was legal. But it's not exactly clean coding because it relies on how strings are stored internally (ie. with a trailing null character), so while it's (again) possible with 3.3 to read a character this way, with #pragma warn_deprecated you will get a warning.
About 3.3.348
Removed a crasher when inheriting functions with struct arguments.
About 3.3.347
Removed a crasher from the memory consolidation phase of the GC.
About 3.3.346
Corrected a compilation problem (gcollect.c still used SMALLOC_OVERHEAD).
About 3.3.345
A garbage collection did not adjust the xalloc statistics.
About 3.3.344
I re-implemented the struct support: structs are now datatypes by themselves (and not rebadged arrays), and allow reflection, ie. looking up and using member names at runtime. See doc/LPC/structs for more information.
About 3.3.343
Gawain adapted the threadsafe ptmalloc2 allocator for LDMud - thanks! Only drawback is that it doesn't support GC (yet?).
About 3.3.342
Removed a crasher: when saving lfun closures, the function name could be looked up in the wrong program.
About 3.3.341
Just clarified a comment.
About 3.3.340
Efun regreplace() didn't test the existance of a particular subexpression match for the \int replacement pattern.
About 3.3.338+.339
Cygwin in highest optimization created buggy code in the LPC lexer.
About 3.3.337
A missing H_NOTIFY_FAIL hook could crash the driver if the H_SEND_NOTIFY hook was set.
About 3.3.336
The counter for memory used was never decremented, causing the driver to signal a 'MAX_MALLOCED reached' when in fact memory was available.
About 3.3.335
Saving lfun closures could crash the driver (I accidentally deleted an important piece of code).
About 3.3.334
Restoring efun closure values now checks if the efun has been overridden by a nomask simul-efun.
With pthreads: made removing an interactive thread safer.
About 3.3.333
Restoring mappings with closure values didn't work.
About 3.3.332
Corrected a preprocessor problem in the xalloc layer.
About 3.3.331
Corrected a small problem in the xalloc layer.
About 3.3.330
Removed a crasher which happened if a login-object destructed itself in the logon() function.
About 3.3.329
Corrected a compilation problem (which my gcc leniently ignored).
About 3.3.328
It is no longer possible to define a variable to be of type 'void'.
About 3.3.327
I straightened out the interface between the allocator and the rest of the system. In particular, the MALLOC-tracing is now done on the xalloc() level, and the GC no longer relies on the knowledge of smalloc's internal structures.
About 3.3.326
The restore_() and save_() efuns can now save and restore non-lambda closures, symbols, and quoted arrays - perfect for storing ready-to-be-compiled lambda closures. However, the savefiles can no longer be read by earlier drivers (the other way around works).
About 3.3.325
Removed a memory leak in the mappings - it mostly happened during swapping and (ironically) cleanup.
About 3.3.324
New operators &&= and ||= for logical assignments.
Added some documentation.
About 3.3.323
Dale Perkins provided a nifty web logo.
Efuns copy_file() and rename() no longer throw exceptions on errors, but just return a non-0 value. In some future, the result will be an error code or message.
Fiona provided more patches for the telnet code, and an updated telnetneg LPC module.
About 3.3.322
The input prompt was not always piped through an existing catch_tell().
About 3.3.321
When logging in a new player, the prompt wasn't printed, which played havoc with muds which are using the new input_to(INPUT_PROMPT) feature.
If the driver is able to reallocate the reserved areas after detecting an 'out of memory' condition, the condition flag is reset.
About 3.3.320
Updated the patch-o-matic to use the new executable name.
The filenames returned by include_list() now always start with a '/' to make their reuse in include statements simpler.
Fiona generously donated the telnet negotiations module from Wunderland, containing a complete implementation of the telnet protocol.
In efun sprintf.c the %O/%Q formatter stumbled over really large arrays and mappings; in fact this was a potential crasher.
About 3.3.319
Corrected a typo in the Makefile.
About 3.3.318
The executable has been renamed to 'ldmud'.
A couple of changes to the configuration and compilation process:
The configure script tries to find out the valid compiler warning options on its own.
send_erq() callback closures can now accept a string instead of an array.
Corrected the lp-245 mudlib to no longer use the function keyword as variable name.
About 3.3.317
Fiona provided a number of corrections for CHARMODE handling - thanks!
About 3.3.316
Brainfart: the problem to correct was that wildcarded supercalls ("*"::fun()) looked at all inherited programs, and not just the directly inherited ones.
About 3.3.315
For wildcarded supercalls ("*"::fun()) the compiler now makes sure that each function is called only once.
About 3.3.314
Small corrections: removed a defunct source-file; documented in doc/LPC/types the formats of ints, floats, chars and strings, and corrected doc/concepts/erq in a detail.
About 3.3.313
Small change to the BeOS development process, so that it is no longer necessary to store the version numbers in the BeOS Makefile.

...and this is patch #5 for today...

About 3.3.312
More corrections to transfer() - funny though that nobody has noticed these errors before :-)

Hmm, this is now the fourth patch in one day - a new best!

About 3.3.311
Correction of a deadlock when using pthreads.
About 3.3.310
Corrected a bug in the deprecated efun transfer(): the result of dest->can_put_and_get() was ignored.
About 3.3.309
Removed a potential racing problem when using pthreads.
restore_object("#0:0") caught the driver in an endless loop.
Guandalug contributed a patch-o-matic for automatic driver updates.
About 3.3.308
With the invention of the context closures the internal space advantage of lfun- over alien-lfun closures is mostly gone, so I merged the two.
About 3.3.307
Corrected a few refcount errors in the dangling-lfun handling.
An internal change to the lfun-closure layout in 3.3.306 caused strange crashes - I undid the change.
About 3.3.306
The conversion of dangling lfuns into dangling alien-lfuns (dev.482) had the small problem that these lfuns had to be created as alien-lfuns. That's what is done now.
About 3.3.305
When cleaning up objects, strings could get freed twice. Oops.
Some source cosmetics.
About 3.3.304
Inline closure spanning include files were created even though the parser recognized them as faulty.
About 3.3.303
Destructed objects sometimes weren't cleaned up.
About 3.3.302
The list of players to flush could get clobbered, stopping output for certain players altogether.
About 3.3.301
Corrected a linenumber counting bug caused by the new inline closures.
About 3.3.300
A typo in a preprocessor conditional had permanently disabled the data cleanup code.
About 3.3.299
Swapping strings during a GC could crash the driver.
About 3.3.298
Corrected an off-by-one error in sprintf() which crept in with the last patch, but wasn't noticeable in the simple tests.
Corrected a crasher in get_type_info(unbound-lambda,2).
Corrected a potential crasher in the handling of netdead objects with pending output.
About 3.3.297
The crashes were caused by a bug in the swapper, which was not prepared to swap strings with embedded \0 bytes; the new cleanup code just happen to trigger the bug sooner than later. I corrected the swapper and reactivated the cleanup code (if you want to deactivate it for testing purposes, you have to edit the define in config.h).
I reduced the frequence of the data cleanup so that it takes an hour to process all objects. Swapped and reset objects are not cleaned up unless more than the normal cleanup time has elapsed.
I made the efuns debug_message(), sprintf() and printf() work better with strings with \0 characters.
About 3.3.296
The new cleanup code seems to have a weird interaction with the swapper - I got several reports from crashes - so for now I deactivated it. If you want to play with it, add a define for NEW_CLEANUP to the compiler options in the Makefile.
About 3.3.295
Corrected an off-by-one error in the linecounting of the auto-include string.
Removed a warning under gcc 2.x (I hope!).
The backend of the driver now regularly scans the variables of every object for references to destructed objects and removes them/replaces them by 0s. This is in particular helpful for mappings which use objects as keys: if such a mapping is only changed by adding/removing entries one at a time, destructed object keys in the condensed part of the mapping would never be removed. Not only wasted this memory, it also could cause the GC to flag the values referenced by these entries as 'leaks', producing enormous log files.
About 3.3.294
Fixed a crasher when H_NOECHO was called for an destructed object.
About 3.3.293
The library tests in configure weren't quite functional.
The editor sometimes crashed on a missing filename - added checks to prevent that.
About 3.3.292
Dangling lfun-closures are now converted into dangling alien-lfun closures, so that the error handler can determine the originating object.
If the initialisation value to allocate() is a mapping or array, the created array elements will receive a shallow copy of the init value.
Indexing [<] created an out-of-bounds condition which wasn't caught.
About 3.3.291
On (Debian) Linux, the test whether libpthread is required didn't work.
The test in xfree() regarding multi-threaded use also triggered when the memory reserves were released.
About 3.3.290
Sorry, I accidentally removed support for TELOPT_EOR in the last patch, this one rectifies this.
About 3.3.289
TELOPT_BINARY is now one of the options negotiable by H_TELNET_NEG; it is needed for non-US charsets.
About 3.3.288
The auto-include correction uncovered another bug in the LPC compiler.
The configuration script now tries to add only those libraries to the compilation which are actually needed.
About 3.3.287
Improvement to find_input_to() and input_to_info(): functions can be specified by object+name.
Using auto-include strings no longer mess up the line counting.
When the xerq finishes a queued write, it sends a ERQ_OK message to the driver.
Removed a crasher in regmatch( , RE_MATCH_SUBS).
About 3.3.286
Bugfix to reset: the previous object was set incorrectly.
New efuns find_input_to() and input_to_info() to make handling input-tos simpler.
Added a (very) primitive safeguard to the mallocator - I suspect that pthreads are making re-entrant calls to it.
About 3.3.285
configure now checks for the libresolv, as it's needed on some systems.
The configure script now keeps track which features (like pthreads or mysql) can't be enabled because of missing support.
About 3.3.284
Recognition of pthread support was broken, and if pthreads weren't available, a 'use-pthread=yes' was not deactivated.
The bug b-020916 contained a few segments which played havoc with patches. I split the bug into several, which also means that this patch won't apply either - download the full archive if that happens.
About 3.3.282+.283
Restoring structs stored in mappings didn't work.
When DYNAMIC_COSTS are enabled, deep_copy() counts array/mapping size and nesting depth towards evaluation costs.
About 3.3.281
The OPCPROF functions still used old-style strings.
About 3.3.280
When using structs, inheriting programs clobbered memory, and sprintf("%O",quoted-array) crashed the driver.
In struct literals a trailing ',' is now allowed.
structs are not flattened by the '...' operator or by apply().
About 3.3.279
Gah, forgot to remove a debug output from the LPC compiler.
About 3.3.278
Lfun closures can now explicitely name inherited functions, for example #'base::create.
I also forgot the regenerate the configure script in the previous patch.
About 3.3.277
In struct literals, a trailing ',' is now allowed.
The indexing range [..expr] created faulty bytecode, maybe even clobbered memory, under certain circumstances.
About 3.3.276
structs now carry an id string which can be queried using get_type_info().
About 3.3.275
There goes to show: I just have to declare categorically that the form (: <statements> :) is impossible to parse with the new inlines and go run a race, and promptly I get an idea how to parse it after all. A plain obvious one, too. My apologies to all who started rewriting their mudlibs.
Removed a couple of crashers regarding structures and new inlines.
About 3.3.274
The error handling for the (: :) form of the new inline closures was lacking, causing the parser to get confused or crash after an error.
I probably haven't documented it clearly enough, but the new inline closures bring to important changes from the old:
About 3.3.273
Untyped inline closures didn't cooperate with #pragma strict_types
And guess what: there was no predicate structp() to detect structures.
About 3.3.271+.272
I have debugged the new inline closure code, and it seems to run quite well. Therefore this new feature is on by default. If you experience too many incompatibilities with your existing code, or if the driver misbehaves, you can deactivate the new inline closures in the configuration.
And 3.3.272 corrects a compilation error in 3.3.271 .
About 3.3.270
The new inline closures are alpha-complete: I can't think of anything else to add, the code compiles, but hasn't been tested yet. It is therefore still inactive, and the point of this release is to see if I broke anything else in the process.
About 3.3.269
Added some infrastructure for the new inline closures.
About 3.3.268
Small corrections; in particular the debug.log file was opened with an incomplete name.
About 3.3.267
New driver option --hostname <name> to specify the hostname, overriding the value returned by the system.
New driver option --hostaddr <addr> to specify the hosts address, overriding the value returned by the system. In particular this address will be used to open the driver ports under.
With pthreads: the diagnostic 'Thread x cancelled and cleant up' might again cause memory corruption. I replaced the fprintf() with something safer.
The driver now checks if an object to be loaded appeared out of nowhere while it was compiled. This can happen when the compilation caused warnings or errors, and the mudlib handled used rename_object() carelessly.
About 3.3.266
The PThread support can now be configured normally using the --enable-use-pthreads. The maximum amount of data pending is configured with --with-pthread-write-max-size and can be changed with the commandline option --max-thread-pending (yeah, inconsistent naming here).
If a connection is marked for removal (e.g. due to a remove_interactive()), telnet commands are still sent to the socket and not dumped to stdout.
Struct can now be compared with == and !=; they can be used as values in foreach() statements and with apply() resp. the ... operator.
About 3.3.265
With USE_PTHREAD: the thread cleanup sometimes dereference a NULL pointer.
About 3.3.264
Using LPC tracing with lambda closures or call_resolved() crashed the driver.
About 3.3.263
The USE_PTHREAD implemention unfortunately ignored that the smalloc memory allocator is not threadsafe: when printing large amounts of texts, eventually the writer thread would free a memory block while the main thread was in the mid of an allocation/deallocation of its own.
The GC miscounted the references on program names, introducing a small memory leak.
Guandalug provided a couple of bug fixes.
About 3.3.262
Bugfixes to efuns set_modify_command() and inherit_list(), and to the check for duplicate toplevel inherits in the LPC compiler.
Added the lpc-mode.el written by Vivek Dasmohapatra.
About 3.3.261
Added the interpreter infrastructure for the new inline closure. Now we just need to add the compiler support...
About 3.3.259/3.3.260
Efun transfer() is now officially deprecated (but still available); the old behaviour of parse_command() is no longer available.
Since the efuns set_light(), set_is_wizard(), and process_string() have been optional for a long time, they can now be enabled/disabled in the configuration process. Oh, and I renamed the config option supply-parse-command into use-parse-command.
The new doc directory doc/obsolete/ holds all the manpages for removed driver functionality - this information sometimes comes in handy, for example when reworking old code.
The driver hooks are now documented one-per-file in the directory doc/hook/.
And a new efun match_command(), which performs the normal driver command matching and returns an array with the results. It can be used for debugging, or to implement your own command handling (in the H_COMMAND hook).
About 3.3.258
Nasty crasher in the LPC compiler: assignments to a struct member caused the LPC compiler to use uninitialized memory if the member lookup had failed.
About 3.3.257
Two bugfixes to the LPC compiler for bugs which clobbered memory.
Then PThreads are used, the newly created threads are now properly detached.
The argument checking for sefun compiled in lambda closures didn't work properly.
The object statistics seem to be correct, so the CHECK_OBJECT_STAT debug macro is by default off now.
About 3.3.256
Some source changes to reduce the coupling on generated include files.
Config option COMPAT_MODE is now purely a default for the runtime option.
About 3.3.255
The new #pragma warn_deprecated instructs the LPC compiler to print a warning whenever a deprecated efun is used.
The string statistics were slightly wrong.
About 3.3.254
The "some source work" also broke mapping lookups *blush*.
Wildcarded supercalls (e.g. "*"::reset()) created invalid bytecode if there was not function found to call.
The type checking regarding assignment and addition of structs had minor flaws.
About 3.3.253
Just some source work.
About 3.3.252
The struct accidentally interfered with virtual inheritance, leaving behind all kinds of uninitialized memory.
Array-additions are now covered DYNAMIC_COSTS as well.
About 3.3.251
Just a small internal improvement of the commandline argument parser. Oh, and I also removed the compatibility arguments like "check_a_lot_of_refcounts".
About 3.3.250
The efuns to_string() and to_array() now support structs; the new efun to_struct() complements the set.
struct literals with both named and unnamed initializers are no longer legal - it was considered borderline featuritis and not really useful.
About 3.3.249
A struct bugfix: inheriting struct variables accidentally confused the visibility tracking of the LPC compiler.
Just for fun I added the rules for a new inline function syntax. But don't worry: it was really just an experiment to see how complicated it would be - by default the whole shebang is disabled.
About 3.3.248
Markus Peter provided a patch for debug_info() which corrected two crashers, one of them related to structs.
Assignments of mixed to struct are now possible without casts. If you assign something which is not a struct, you'll get a runtime error as soon as you try to access one of the members.
About 3.3.247
What did I say about bugs? Well, restore_object() restored arrays as struct values, and vice versa.
About 3.3.246
structs are fully implemented - Yay! Of course, there are still bugs to fix, and I probably didn't think of the one or other feature, but otherwise...
About 3.3.245
More struct work: Fixed a crasher, and implemented constant struct initializations when __INIT() is not used.
About 3.3.244
struct definitions are now implemented, and can even be inherited (though I didn't test the latter yet). You still can't use them, however.
About 3.3.243
Made some internal changes for struct support. Nothing accessible to the wizards yet, mind you, except that configuration option ALIGN_FUNCTIONS is now mandatory.
About 3.3.242
The string statistics were miscalculated when untabled strings were made tabled.
External callbacks to lambdas (ie. driver hooks) now clear the eval cost before an error is processed.
The object statistics get messed up because variables are counted as 'swapped in' more often than they had been swapped out. I am not exactly sure why - it could be an interaction with the GC - but I moved the computations at somewhat better places in the swap process. Let's see if that helps.
About 3.3.241
Whoa, the SSTAT diagnostics produced really a lot of output. But I have a first clue about what's happening, so I will debug that problem in OSB; for everybody else the diagnostics will be disabled.
About 3.3.240
Added missing %endif in the LPC compiler source - I am surprised that I didn't get any compilation errors before.
About 3.3.239
The string module statistics seem to go haywire after some time. I added a 'DEBUG: SSTAT' diagnostic when that happens.
About 3.3.238
Support for international characters was broken.
About 3.3.237
A first step towards structs: I added the necessary rules to the LPC compiler in order to see if the syntax could be done. Right now they don't generate code, but just throw errors reminding you that structs are not yet implemented.
About 3.3.236
Corrected bytecode generation bug.
About 3.3.235
Since the LP-245 mudlib is actually used by some, I changed it so that all functions are compiled with type-checking enabled.
About 3.3.234
The USE_PTHREAD code didn't compile.
Corrected a few messages.
About 3.3.233
Efun terminal_colour() again: not a crasher this time, but garbage data was printed.
About 3.3.232
Efun terminal_colour(): the bugfix to handle strings with single '%' was not quite complete - the driver still could crash.
About 3.3.231
External master calls (like for ERQ messages) get the same eval-cost benefits during error handling as normal call-others.
About 3.3.230
Corrected some build problems.
The ERQ debugging level is now configured with the option --with-erq-debug=number, where number can currently be 0 (disabled, the default), 1 (normal debug output) and 2 (lots of debug output).
About 3.3.229
Corrected a crasher in the error handling of defines given on the command line.
The ERQs now print their name and compilation date to stderr on startup.
If the driver uses the default debug.log file, its (mudlib) name is available in the predefined macro __DEBUG_LOG__.
Corrected a some minor build problems.
Efun symbol_function() freed a symbol as a string.
Corrected a crasher in the regexp() modifications.
About 3.3.228
New predefined macro __RESET_TIME__ and __CLEANUP_TIME__ to return the default reset and cleanup interval time.
About 3.3.227
Formatting a text with single '%' with terminal_colour() caused to code to search random memory for the '%^' marker - this would explain a number of crashes.
Argument errors in the vararg efuns printed the wrong efun name.
About 3.3.226
Corrected a bug in the array-array operations which forgot to clean out references to destructed objects in short arrays.
About 3.3.225
Corrected a bug in the array-array operations which produced incorrect results for arrays with multiple copies of the same value.
About 3.3.224
Corrected a fatal bug in the array-array operations.
About 3.3.223
Removed compiler option -funroll-all-loops from the configuration as it produced buggy code.
Plugged two memory leaks.
About 3.3.222
One error message printed memory garbage.
Corrected some build problems.
About 3.3.221
I forgot to allow |= on arrays even though | already worked.
And the operators ^ and ^= now also work with arrays and compute the symmetric difference.
About 3.3.220
Ok, adding the copy-on-write semantic was a bad idea: it broke more than it fixed. Therefore I took it out again.
Corrected two small bugs in the configuration code - my gcc took it in stride, other compilers were pickier.
About 3.3.219
The last PCRE patches - Yay!
PCRE is now the configured default for the driver (but I modified all existing mud setting files to use the old regexp package).
Both packages increase the eval-cost counter for every backtrack they have to make during a match. Intention is to catch a pathological match like regexp(({"=XX==================="}), "X(.+)+X") before it freezes the driver for hours.
About 3.3.218
New predefined macros __CATCH_EVAL_COST__ and __MASTER_EVAL_COST__ to carry the corresponding configuration options over to LPC.
The debugging compilation options are now part of the normal configuration mechanism.
Debug macro CHECK_OBJECT_STAT allows tracing of all changes to the tot_alloc_object(_size) statistics. Aim is to find the discrepancy in the 'status' command. To activate the tracing, the commandline option --check-object-stat must be given.
The operations map += map and map -= map now implement the copy-on-write semantic to mirror the behaviour of the related array operations.
get_type_info(closure,2) did not return the bound object for efun, simul-efun and operator closures .
Attempting to replace a program in an object which already has closures bound no longer raises an error, but issues a debug_message().
It is now possible to define non-vararg efuns with more than six arguments.
About 3.3.217
In symbol_function(), symbols were freed as if they were strings.
Signal USR2 forces the driver to reopen the host.debug.log file.
Experimental: Defining USE_PTHREAD (if your system has pthread support) activates code which uses threads to write the socket data to the network in the background. Intention is to avoid EWOULDBLOCK errors on slow connections.
About 3.3.216
How embarassing: the bugfix for filter() and map() broke the efuns for non-multi-value mappings.
About 3.3.215
It has been quite some time since the last update - reason being that I am switching my main development over to OS X, which means that my software environment is not quite working yet. In particular PRCS, which is not quite adjusted to the caseless-ness of the HFS filesystem.
When the efuns filter(), map() were used on multi-value mappings, the driver did not recognize when the called closure kept a reference to the array with the values, overwriting the values in the next iteration.
Fixed two crashers: Calling a self-destructing closure from limited(), and two uninitialized variables in the traceback collection for a catch() frame.
If a program is inherited twice at the toplevel, a warning is raised. If pragma 'pedantic' is in effect, an error instead of the warning is raised.
About 3.3.214
Two changes to regmatch(), suggested by Fiona: non-matches return 0 instead of the empty string, and the efun now takes and returns a start index for repeated matches.
About 3.3.213
During a GC, the list of destructed objects could get clobbered, leading to an insiduous memory leak.
Added some support for local charsets; in particular character conversions are now done with regard to the locale defined in the environment variable LANG.
Corrected a bug in regreplace().
Wonder why this patch does not include a correction to the error correction to the virtual inheritance problem, but the corresponding patch for 3.2 does? Well, this driver already had the correct code.
About 3.3.212
Applied the two bugfixes provided by Guandalug for efuns get_dir() and strstr()
About 3.3.211
Sorry, yesterday's bugfix had a bug itself.
About 3.3.210
Corrected a rare and complicated, but fatal error in virtual inheritance.
The new arguments to garbage_collection() are ignored if the used memory allocator doesn't support GC.
About 3.3.209
The option TRACE_CODE moved from the Makefile into config.h, and is also configurable per argument to the configure script.
Efun garbage_collection() now optionally takes a filename argument to specify a different logfile but the default one, or even to change the default log file.
Fixed a nasty bug in the hash routines which caused FinalFrontier to crash on startup.
About 3.3.208
'mapping += mapping' throws an error if the mappings are of unequal width.
The notation ([:expr]) can be used to create empty mappings of the given width.
About 3.3.207
Nothing terribly important, just a small correction to a diagnostic.
About 3.3.206
Another exception to the rule that references can't be put into arrays: the H_DEFAULT_METHOD hook.
Apparently the LPC compiler was a little lax in checking if it got enough memory for the program code it generated. This may have been the reason for the occasional crasher on corrupted memory.
About 3.3.205
The new swapping code could clobber memory - fixed that.
Corrected a small problem with inheritance of variables with differing visibility.
The compiler error and warning messages now have the "file line line : text" format.
Deactivated the debug defines CHECK_MAPPING_TOTAL and CHECK_OBJECT_REF, since these bugs seem to be fixed. This will also reduce the CPU usage of the driver.
About 3.3.204
Using unbound lambdas for prompts crashed the driver.
The new debug macro CHECK_OBJECT_GC_REF instructs the GC to check if non-object memory references really don't point to non-object memory blocks. No performance penalty (unlike CHECK_OBJECT_REF), but you need MALLOC_TRACE activated, too, for it to work.
About 3.3.203
The line number information is now stored in a memory block separate from the main program block. This makes the swapping code simpler, and hopefully makes it easier to debug a swapping related crash in 3.2.9-dev.429 - maybe it even fixes it.
About 3.3.202
If the compiler runs out of eval ticks because of too many calls to the master applies, a compilation error is generated and subsequent master calls are suppressed.
Blueprints without code could case a crash if destructed while being swapped out.
If pragma pedantic is in effect, calls to undefined functions are flagged (as warning) even in functions without typechecks.
About 3.3.201
A new efun: m_add().
Corrected a bug in the error message generated when wrong arguments are passed to a varargs function..
About 3.3.200
Efun regreplace() efun copied garbage characters when subexpressions were inserted.
The typechecking for the assign operator was broken.
About 3.3.199
In efun regreplace() the length of the result was sometimes miscomputed, leading to fandango on the core.
The typechecking for the op= operator accepted fewer value combinations than possible.
About 3.3.198
I renamed a couple of files, so here is a full release since diffs are notoriously unreliable in this situation.
The PCRE support is mostly complete (documentation and testing are still missing), and is even stable enough to not crash the driver immediately.
A new efun regmatch() allows for a quick check if a string matches a pattern or not.
And regexplode() got a new option flag.
About 3.3.197
A bug correction to the 0-refcount correction in the last patch.
Hopefully I also corrected the bogus mapping statistics.
About 3.3.196
The construct string *= int didn't compile.
I think the problem with the 0-refcount objects is caused by swapping the blueprints. I made a change to deal with this situation, let's see if it works.
About 3.3.195
The PCRE changes did indeed break the driver. This patch corrects it so far that OSB can be used and Evermore at least boots - but there is work left to be done.
The H_DEFAULT_METHOD implementation had pretty nasty bug.
About 3.3.194
An error during the initial load of the master object could crash the driver.
About 3.3.193
PCRE support is now good enough to match patterns - pattern replacement doesn't work yet. However, as I didn't have much time for testing, this change might have broken even the normal regexps - consider yourself warned :-)
About 3.3.192
Deactivating the blueprint code helped some people with the object refcount problem, so as countercheck I activated it again.
Updates to the bugs reports.
About 3.3.191
md5_crypt() overwrote array bounds when passed a numeric second argument.
About 3.3.190
Another babystep towards PCRE: the regexp related efuns now take an option argument so that the PCRE options can be used from LPC.
About 3.3.189
One more babystep towards PCRE, meaning that the driver doesn't compile at all when USE_PCRE is active :-)
About 3.3.188
If macro NO_BLUEPRINT is defined in driver.h, the driver does not track the program->blueprint relation anymore. While this impedes the blueprint() efun, it might solve the object refcount problem. If it does, I have a better idea what to look for.
During the initial load of the master, any warning would cause the driver to wimp out.
Efun query_verb() now takes an optional flag argument to return the set action verb.
About 3.3.187
Removing the last pending input_to() did not reset the internal 'this user has an input_to() pending' flag.
About 3.3.186
I didn't have much time over the last days, but it was enough to make the source a bit more palatable for Compaq's True64 compiler.
About 3.3.185
The CHECK_OBJECT_REF is now a bit less thorough, but also less wasteful with cycles.
About 3.3.184
Corrected a piece of code which relied on the undocumented behaviour of free_svalue().
New efun blueprint() to return the blueprint for an object.
Defaultoptimization level for Makefiles now is Medium (usually -O2).
About 3.3.183
CHECK_OBJECT_REF had yet another bug, which unfortunately didn't materialise with the Finalfrontier lib I used for testing. Hmpf.
Cygwin is so special, it even puts the stack segment under the heap. The heap/stack gap check code of course wasn't prepared for this constellation.
About 3.3.182
The CHECK_OBJECT_REF sanity check was a tad too zealous and dumped core even if everything was correct. Sorry.
Efun all_environment() errorenously rejected destructed objects as arguments.
About 3.3.181
The previous stack/heap check implementation was overwhelmed by the big address spaces some machines have - this has been corrected.
Whereever a new value was added to a mapping, the code did not check if the requested memory had been allocated.
About 3.3.180
The driver now keeps an eye of the distance between stack and heap. If they get too close, it will throw an error; should they overlap, the driver will fatal with a nice error message. This might remove (or at least explain) a few mysterious crashers we had before.
Pulami contributed a whole bunch of german translations for efun manpages.
About 3.3.179
The CHECK_OBJECT_REF now checks the validity of list of the destructed objects and fatal()s the driver on a detected inconsistency. You have been warned.
About 3.3.178
Efun deep_copy() didn't handle quoted arrays properly. And while I was at it, I also added the efun unquote()
There have been a couple of crashers caused by strange refcount errors on objects. To investigate these, I added some tracing output about the lifetimes of blueprints. If your mud is not afflicted and the output is too much for you, disable the define CHECK_OBJECT_REF in the file driver.h before compiling.
About 3.3.177
Corrected a problem with inheritance: early inherited protected functions could hide later inherited public ones.
Efun get_dir() now supports the GETDIR_NAMES flag to return full pathnames.
About 3.3.176
When the gamedriver runs into a fatal error, it calls notify_shutdown() in the master before dumping core.
Added the mapping statistics diagnostic code from 3.2.9 .
About 3.3.175
A bit more PCRE code - still not functional.
About 3.3.174
Efun debug_info() can now return the call trace for both the last error in general and the last uncaught error.
The --no-heart option was somewhat ignored.
Configuration parameter MAX_MAPPING_SIZE (and its associated commandline parameter) now determines the maximum size of a mapping in total elements (that is: keys + values), not just the maximum number of entries (keys). As a guesstimate, I tripled all existing MAX_MAPPING_SIZE parameter values.
Corrected a small miscounting in the malloc statistics.
About 3.3.173
An error in add_action() could cause the driver to free memory twice.
Added a parameter sanity check to terminal_colour(): the given indentation has to be smaller than the wrapping limit.
About 3.3.172
Unloadable objects with names with printf() style formatters in them could crash the driver.
Array-joins didn't work properly.
Fixed a few memory leaks.
About 3.3.171
It is now possible to define local variables anywhere in a block (like in C++) not just at a block start.
About 3.3.170
I forgot to close a comment in gcollect.c in the last patch, but somehow my compile didn't pick that error up. Weird.
About 3.3.169
In a for() statement, loop variables can now be declared without an initialisation (e.g. for(int i; ...)) - they will be then initialised to 0 automatically.
Collin Baillie found an overflow problem with the random() efun on Alpha machines - I think I fixed it.
simul-efuns shadowing efuns weren't properly discarded on a simul-efun object update, so that the old implementations couldn't be reactivated.
If a closure was called securely (ie. with any errors caught internally), the error handling did not properly dereference the the closure. This leaked memory for example in ERQ callbacks.
I removed a couple of crashers caused by incomplete argument checking.
There seems to be a strange object leak which leaves behind objects without a valid name pointer. Since this crashes the GC, I disabled that particular bit of data dumping.
About 3.3.168
Oops, I accidentally delete two lines from the copy_bits() efun. Also, the efun was not safe against malicious numerical overflows.
Corrected a column formatting error in sprintf().
About 3.3.167
The Makefile didn't correctly build the PCRE stuff.
terminal_colour() miscounted on some texts and subsequently failed a sanity check.
Corrections to new efun copy_bits().
Destructing players during a shutdown in master lfun notify_shutdown() would later cause the driver to pass these destructed objects to remove_player() and most likely crash.
And errors in add_action() could leak memory.
About 3.3.166
A new efun: copy_bits()
The formatting in terminal_colour() was corrected like for sprintf() before.
Began the integration of PCRE into the driver. The configuration parameter is --use-pcre (disable by default for now), and if enabled the PCRE code will even be compiled; but so far all regexps continue to use the old regexp code.
About 3.3.165
I simplified the internal handling of the editor prompt; and if we're lucky this might also get rid of one of the known memory leaks.
And efun notify_fail() had a memory leak if it was used by a non-command giver object.
About 3.3.164
Nothing important, I just cleaned up the bugs/ directory. If your patch program barfs on the diff, don't worry: I'll put up a complete archive this weekend.
About 3.3.163
New driver hooks: H_DEFAULT_PROMPT to specify a default prompt different from "> "; and H_PRINT_PROMPT if you want to do extra magic when printing prompts.
Improved the formatting of sprintf(): Too long words are no longer forced onto the next line.
About 3.3.162
No code change; I just added some more feedback about memory leaks to the bugs/ files and it got rather large, so I decided to check it in separately.
About 3.3.161
(simul-)efuns overrode inherited public undefined functions, which made a crossdefinition of these functions through another inherited module impossible.
About 3.3.160
Too long error message could crash the driver; they are now truncated when necessary.
Removed the undocumented 'feature' of process_string() that a space terminated a function call specification.
The | can now be used to compute the union of two arrays.
About 3.3.159
Corrected a crasher: input_to with all the nasty flags crashed the driver in the privilege violation check when there was no this_player().
About 3.3.158
The GC did not clear the refcounts of known destructed objects, which occasionally lead to the 'First reference to program but refcount != 0' fatal error.
replace_program() without an argument refused to work if the superprogram had virtual variables somewhere up the inheritance tree.
About 3.3.157
The wildcarded supercall "*":: no longer throws an error if none of the inherited objects defines the called function. It fits into the semantics of the '*' wildcard ("any or none"), and it is practical for supercalls like "*"::reset().
About 3.3.156
If switch() is used on a value which is neither a string nor a number, the driver no longer generates a runtime error messge, but instead jumps to the default label.
About 3.3.155
Improved the compilation of negative numbers, which also fixed the problem that all uses of __INT_MIN__ caused a runtime error.
The :: operator did not recognize the separate namespace of local variables.
Subtracting or copying mappings did not remove destructed elements first.
Compilation error messages now list the inheritance chain.
About 3.3.154
Fiona did more analysis of the hash function used for the RXCache and found that using a prime table size does not improve the fill or collision ratio. So the table size is back at 8192.
More care is taken to discard all registered simul-efuns whenever the simul-efun object is destructed. This should solve the problems that updating the simul-efun object suddenly produces 'undefined function' errors on existing sefuns.
About 3.3.153
Ooops, the overflow check for float arithmetics wasn't quite correct.
Reduced the RXCACHE table to size to prime 8191 - Fiona noted that just halfing the size doesn't improve the fill ratio.
Added a couple string table statistics to check the efficiency of its hash function.
About 3.3.152
Added new predefined macros __FLOAT_MIN__ and __FLOAT_MAX__ for the float value limits.
Float arithmetics is now checked for overflows, too.
The default size of the RXCACHE table is now 8192 instead of 16384 entries.
About 3.3.151
Removed an occasional crasher from efun terminal_colour().
About 3.3.150
Corrected a refcount leak in the replacement and freeing of programs, which led to leaked objects.
Corrected a crasher in the GC, introduced with the last patch.
About 3.3.149
There was a potential crasher in the error handling of invalid arguments to the input_to().
The driver seems to have a leak in object references. The GC did clean up the memory, but messed up the object statistics by doing so. I corrected the latter problem, and will now look for the former.
About 3.3.148
Destructed objects are now kept in a list to aid mud admins in controlling the resource usage of the mud. The statistics about the destructed objects are returned by debug_info(DINFO_STATUS) in the new fields DID_ST_OBJECTS_NEWLY_DEST and DID_ST_OBJECTS_DEST. A OBJ_DUMP-style dump of the destructed objects is available with debug_info(DINFO_DUMP, "destructed"), by default the created file is /DEST_OBJ_DUMP. The built-in commands dumpallobj and status tables have been changed accordingly.
About 3.3.147
to_string() can now handle operator closures, too.
About 3.3.146
Corrected the handling of one-line columns in (s)printf().
Added diagnostic code to determine the reason for the reported miscounting in the mappings statistics.
About 3.3.145
Fixed a sweet little crasher connected with the updating of simul-efun objects: if objects had been compiled before, and one of the called sefuns changed their argument signature, future calls could cause the driver to execute random bytecode and/or crash.
Acius wrote an implementation of the A* pathfinding algorithm and allowed me to add it to the distribution.
About 3.3.144
The extra refcount check didn't count call_out references properly.
About 3.3.143
The mapping handling had a couple of pointer bugs, occasionally crashing the driver.
About 3.3.142
Corrected another occasional crasher caused by a misinitialized variable in efun say().
About 3.3.141
The input escape character can now be configured at compiled time to something different from '!'.
Using set_this_object() before the simul-efun object was loaded crashed the driver.
Added a settings file for BatMUD.
About 3.3.140
The increment and decrement operators now also check for numeric overflows.
The overflow __INT_MIN__ / -1 is recognized.
The driver defines the values __INT_MAX__ and __INT_MIN__ for your convenience (and better portability).
Telnet option TM can be negotiated directly by the mudlib.
Efun call_out_info() now returns the target object for closure callouts.
And I corrected a reference count bug in say().
About 3.3.139
All additions, subtractions and multiplications now check for numeric overflows.
About 3.3.138
Oops, the overflow checks introduced in the previous patch sometimes divided by zero. Well, not any longer.
Another overflow in sprintf() removed.
About 3.3.137
Real life is quite busy, with Christmas coming and deadlines looming, so I am a bit behind with my mail. Meanwhile, Menaures threw a nasty testprogram against the driver which discovered a number of overflows in size computations in string multiplications and mapping sizing, so here are the fixes.
It was also discovered that gcc 2.91 generates buggy code for the computation MAX_INT % -1, so the driver works around that one, too.
About 3.3.136
New driver option --random-seed num sets the seed value for the random number generator for debugging purposes. If not given, the driver chooses a seed value on its own.
When an alien lfun closure has been created by a different object than the code resides in, any call to it will create two entries in the caller_stack - one for each object. This is to avoid security holes.

This behaviour is not really new; it was deactivated in 3.3.83 because at that time it always created the two entries even if the objects were identical, and nobody knew the reason.

About 3.3.135
Removed an obscure crasher in the error handling of call_other()s on arrays of objects.
About 3.3.134
Corrected a small bug with the linecounting in error messages.
About 3.3.133
Another correction to the compiler bugfix of .dev-368. We're really messing with the darker parts of the LPC compiler here *sigh*.
About 3.3.132
Yesterday's error correction in the compiler caused the driver to choke on legitimate code. It should work now.
About 3.3.131
The mudlib/sys/functionlist.h now uses a ""-type include for lpctypes.h instead of the old <>-type.
Inheriting two private functions of the same caused the compiler to crossdefine the second one to the first. Not directly visible to the user, this messed up any use of these functions by INITIALIZATION_BY___INIT.
Efun replace_program() can omit the argument if the object has only one inherit.
About 3.3.130
Corrected a problem with the auto-include string: preprocessor directives in the first line weren't recognized.
Efun say() could leak object references.
The mudlib/sys/functionlist.h now uses a <>-type include for lpctypes.h instead of the old absolute path.
The mySQL package now uses a generated id as handle, making it more reliable.
New editor command 'T' to perform Tab <-> Whitespace conversion.
About 3.3.129
Corrected another obscure crasher in sprintf().
About 3.3.128
The change is probably a bit deep for 3.2.9, but since 3.3 is a playing field anyway... efun include_list() now has a proper implementation.
About 3.3.127
The bugfix to the hidden-(simul)efun problem itself had a bug, causing the LPC compiler to ignore functions or even crash. It should be fixed now.
An unlucky combination of an invalid format string and a formatting error in (s)printf() could crash the driver.
The H_AUTO_INCLUDE closure now also receives a flag telling whether the include was a system include or normal include.
Corrected a bit mishandling in and_bits(), or_bits(), xor_bits().
Getting to the files included by a program is unfortunately more difficult than expected, so therefore include_list() is currently just 'preliminary' in behaviour.
About 3.3.126
If H_AUTO_INCLUDE is set to a closure, it is called for every file read during a compilation.
Bugfixes: The tagging of virtual inherits sometimes tagged the base program, too. And inherited private functions hid (simul-)efuns of the same name.
Small new efun include_list() to return the files included in a program file.
About 3.3.125
This is going to hurt a bit: I deprecated the efun set_auto_include_string() in favour of the new driver hook H_AUTO_INCLUDE. In return it is now possible to use a closure as auto-include setting, thus allowing to compute the value of the string depending on the object compiled.
Efun inherit_list() can now tag virtual inherits as such in the result.
Efun input_to() can now be instructed to print a prompt. That means, instead of writing

write("Enter your name: "); input_to("enter_name", ...);

you can now write:

input_to("enter_name", INPUT_PROMPT, "enter your name", ...);

About 3.3.124
I corrected a bug in the handling of VM stack overflows: svalues were freed twice, occasionally crashing the driver.
The efun terminal_colour() now uses less VM stack for temporary storage.
The efun debug_info() now returns additional (DINFO_DATA, DID_MEMORY) statistics: DID_MEM_ALLOCATED is the amount of memory allocated by the driver, including all allocator overhead; DID_MEM_USED is the amount of memory actually used by the driver for data (the difference to DID_MEM_ALLOCATED is overhead); and DID_MEM_TOTAL_UNUSED is the amount of memory allocated from the system, but currently not used by the driver.
About 3.3.123
If driver hook is set to an array of directory names, names with leading '/' weren't recognized properly.
member() used with closures didn't always find them.
About 3.3.122
I noticed that the automatic mapping compaction in the backend did not remove destructed entries from the mappings. This is not fatal, but could lead to higher-than-necessary memory retention.
I the macro DUMP_GC_REFS is defined in driver.h, the GC writes a log of every reference it finds. This is meant to debug tricky problems like the "Program block referenced as something else" fatal errors some people experience.

Since this option produces a lot of output, care has to be taken in order to prevent the log from overflowing the disks. Using bash and awk, the following command can be used to store the log from just the latest GC in a file called "gc.log":

         (driver your options --gcollect-outfd=3 3>&1 > parse.log 2>&1)
         | awk 'BEGIN { f = "gc.log" }
                      { print $0 > f }
                /--- Garbage Collection ---/ { close(f); print $0 > f }'
         
About 3.3.121
Sorry, I introduced a compilation problem in the last patch when MALLOC_LPC_TRACE was not defined.
Removed a bug/occasional crasher from the freelist consolidation phase of the garbage collection.
Efun transfer() miscalculated weights when used with non-livings.
Bug fix in closure calls.
About 3.3.120
Removed the "last_dirty_mapping" inconsistency bug.
Improved the output on the "First ref to" sanity check in the GC.
The make_func lexer can now handle files in DOS format.
About 3.3.119
If regreplace() is passed a closure, the closure will also receive the position at which a match was found.
New efun remove_input_to().
About 3.3.118
add_action() now requires that both action giver and receiver have a valid environment. Previously this wasn't checked, and destructing the action giver would then crash the driver.
About 3.3.117
Removed a crasher from sprintf() which happened when a string to be justified contained only one word.
Oh, and the nomenclature for sprintf() is the following (I asked somebody with experience in layouting): the generic term is alignment, sprintf() defaults to right alignment, the modifier '-' requests left alignment, the modifier '$' requests justification.
About 3.3.116
I reactived the assignments to negative ranges - the feature is indeed in use (and apologies to TubMud!).
There is a crasher in the flush formatting in sprintf() which I didn't get around to fix yet.
About 3.3.115
Another crasher in call_other()s on arrays of objects.
And call_out() now allows 0 delays.
About 3.3.114
The driver didn't compile with SYSMALLOC as allocator.
There was a bug in call_other()s on arrays on objects, causing the driver to crash.
And strstr() referenced freed memory.
About 3.3.113
The flushing algorithm wasn't quite correct yet.
It is now possible to pass simple arguments to the erq using the --erq driver options.
The erq/xerq understand the --execdir commandline option to override the default directory for the callable programs.
The new driver hook H_DEFAULT_METHOD allows to provide a default implementation for unresolved call_other()s. The new efun call_direct() can be used if you don't want a default call.
About 3.3.112
sprintf(): New modifier '$' for strings implements flushed formatting.
About 3.3.111
inherit_list() can now the inherited objects neatly arranged in a tree structure.
varargs arguments didn't quite work on simul-efun calls when no argument was passed.
About 3.3.110
I removed what looked like a possible race condition in the GC.
function_exists() can now return the filename and linenumber of the function looked up.
About 3.3.109
Just improved some error and warning messages.
About 3.3.108
Termating a macro in an include with end-of-file confused the lexer.
Restricted warnings about visibility changes to prototypes.
Efun binary_message() wrote random data.
About 3.3.107
Renamed efun md5_encrypt() to md5().
New efun md5_crypt() to generate Apache compatible encrypted passwords.
About 3.3.106
Prototypes could modify the definition of inherited functions in obscure ways. As a side effect there are now warnings if the visibility of a function differs between prototype and function.
About 3.3.105
The nomask modifier no longer worked.
About 3.3.104
Added a warning for empty #pragmas.
The driver crashed when tracing was active and the current player changed to a non-interactive object.
About 3.3.103
The pragma recognition worked fine, less so the recognition of faulty pragma statements - both false positives and negatives occured.
To achieve some compatibility with MudOS muds, the pattern "%%^^" serves as second encoding of literal "%^" in efun terminal_colour().
Added support for the telnet options 85, 86, 90 and 91 which are used by the Mud Compression, Sound, and Extension Protocol.
Integrated some changes from Freaky which make the driver more amenable to run on Linux/s390.
About 3.3.102
A bugfix: the pragma recognition code couldn't handle CR characters.
It was pointed out to me that the idiom [i..i-1] = ... is used to insert elements before position i in a string or array, so I allowed it again as special case. Large negative ranges remain illegal.
About 3.3.101
Under certain circumstances the GC could crash while trying to print information about recycled closures.
Assignments to ranges of negative length like [3..2] are now caught.
It is now possible to specify multiple options in one #pragma directive by separating them with commas.
About 3.3.100
The lexer now warns about unknown pragmas.
The check for tracing was done against the current commandgiver, not against the current interactive as it should be.
About 3.3.99
There was a crasher in the LPC compiler when a private nomask function was inherited over several levels - possibly only when the function was inherited this way multiple times in parallel, I didn't quite figure that out. Anyway, the crasher, which affected inline closures, is gone.
About 3.3.98
I added an internal function to the allocator to help with memory problem diagnostics.
About 3.3.97
Corrected the problem in terminal_colour(): repeated calls to the color-mapping closure clobbered the previous results.
Inline closures are now all private nomask.
The recent adjustment of the allocation statistics introduced a fatal, but unfortunately sporadic bug into the variable swapper.
About 3.3.96
A few corrections to statistics.
Cleared a confusion of the lexer between macro arguments and mapping indices within macro arguments.
About 3.3.95
We discovered major memory leak in the mySQL package: the memory holding query results wasn't freed. Poor Finalfrontier ended up with 270MB in clib allocations after only a few hours.
Some more tweaks to the check-refcounts diagnostic code.
During a low memory situation, slow_shut_down() is called only if the previous call is longer than the requested shutdown time ago.
There is no 3.3.94.
About 3.3.93
The reference loop check was too strict, flagging even some legal assignments.
About 3.3.92
Improved the detection of reference loops on assignment.
Reloading the master object accidentally freed a few object references too many.
About 3.3.91
The check for the MAX_MALLOCED limit was incomplete and could lead to the driver clobber memory.
Remove two crashers in the debug and check-refcount diagnostic code.
The range changes for the new [>] indexing were incomplete.
Efun sscanf() didn't check its arguments.
About 3.3.90
Argh, this private thing is like a thread in a wollen sweater: one tuck and everything falls apart. But it's getting better.
Also fixed is a crasher in the error handling when there is no valid current_object, e.g. when ERQ callbacks are executed.
About 3.3.89
Yup, there still was a crasher: it happened when a program called a non-lambda closure from inside a lambda closure. Thanks to Fiona for narrowing down the offensive LPC code.
About 3.3.88
The correction to the 'private' problem had problems itself, causing the driver to crash under obscure circumstances. I solved it now in a different, hopefully stable way.
Another crasher solved: if an efun was called with too many arguments, the error handling in the compiler clobbered memory.
If a catch() is execute with not enough time left, a better error message is generated.
Note: The correction of the lambda problem from 3.3.85/.86 may not be complete yet. We're investigating.
About 3.3.87
It is now possible to define a function with the same name as an inherited private function without redefining that inherited function as well.
New format specifier "%Q" for printf()/sprintf() works like "%O", except that special characters in strings are printed in LPC notation. For example: sprintf("%Q", "\n") returns "\n"
About 3.3.86
Ooops, the fix for the lambda crasher introduced a crasher on its own.
About 3.3.85
Fixed two crashers: Adding a mapping to itself with += clobbered memory; and it was possible to delete a lambda closure while it was executed, again clobbering memory. Thanks go to Dan, Fiona, and Patryn for nailing these down.
About 3.3.84
The recognition of numeric character constants was flawed - and nobody noticed it :-)
Efun program_name() now also accepts a 0 as argument, and
Efuns ceil() and floor() join the club of float efuns accepting integers as arguments.
About 3.3.83 After a week of recovery from this (if you can't find me, look here for a hint (the caption is wrong, though)), I caught up with a couple of reported problems:
Indexing strings for assignment did not detect shared strings properly, occasionally changing logically different strings as well.
Deleting a shadowed object crashed the driver.
Efuns load_name() and object_name() can now be used with 0 as argument and return 0 in that case.
The detection of mySQL support became more flexible: if you specify the use-mysql path to path, the include files will be searched in path and path/include; and the libraries will be searched in path/lib/mysql, path/lib, and path, in this order. It is amazing in how many ways this package is installed...
It is now possible for the first 255 simul efuns to receive reference arguments as a vararg, for example to fully implement an overload for call_other. But heed this Warning: Storage of references in arrays is by large unimplemented, and arguments such received should only be used as function call arguments through apply()!
About 3.3.82
Efun sizeof() can now be used on strings, too.
About 3.3.81
It sucks that I can't compile the mySQL package at home - so I didn't find the really stupid syntax error myself.
Fuchur corrected an age-old bug in the parsing of macro definitions. It must have been in there for years, but wasn't noticed until I added the redefinition warnings.
About 3.3.80
I added a warning yesterday about redefined macros where the definition itself didn't change. Unfortunately this clobbered an internal structure, crashing the driver on some machines.
And another crasher fixed, in terminal_colour(): under rare circumstances the use of a closure to lookup colour keywords could dereference a NULL pointer.
Niels submitted another clean_up correction, which should prevent that lots of clones never get a chance to clean up.
And I'm one year older today, which has nothing to do with anything, I just thought I mention it :-)
About 3.3.79
Small corrections to the efuns sprintf(), regreplace() and db_error().
The clean_up mechanism had some serious flaws which dated back to 3.2.1 times.
The alarm checking and restart under Windows should work better now.
About 3.3.78
The '$' modifier from sprintf() is gone again - Largo pointed out that it's sufficient (and easier to understand) to use the explicite pad string instead. So if you want sprintf() to pad your table to the full length with spaces, specify the pad string ' ' explicitely.
The special command malloc is now also under the control of the IS_WIZARD flag.
The count of mappings and arrays in status is now updated by the GC.
About 3.3.77
Finally a change which is really unique to 3.3, and not just transported stuff from the 3.2 line:
I added the [>] indexing method to single and range indices. With this one, the sign of the index at runtime determines whether it will index from the end or from the beginning. With this, we get the one piece of true functionality the now-gone efun extract() had to offer. In fact, we get more: these indices and ranges can also be used as lvalues.
When the driver was compiled with MALLOC_LPC_TRACE, and the garbage collector freed a circular array reference, the driver crashed in the dump routine. Oops.
About 3.3.76
Some work on actions: actions added by shadows are now removed properly when the shadow vanishes; and the new add_action() flag AA_IMM_ARGS implements the sane handling of short verbs.
About 3.3.75
Comparison of operator-, efun- and simul efun-closures was unstable.
When printing closures with %O, simul efun closures are marked as such.
A couple of changes to the autoconfiguraton and the startup/shutdown of the driver to make it more amenable for Windows.
About 3.3.74
The format modifier '$' for sprintf() keeps padding spaces before a newline. This is useful when formatting tables which are later embedded into something else.
Fiona corrected the parsing of escaped character constants.
You can get the detailed time with gmtime() and localtime().
About 3.3.73
I relaxed the typechecking on inherited variables a bit: it is again possible to redefine a static variable by a non-static one of the same name, and vice versa. Language purists will probably cringe (I know I did), but it's one of the features of LPC.
About 3.3.72
Figures. I completely missed a syntax error in the LPC compiler.
About 3.3.71
'//' didn't like to be terminated by the end of file.
The configuration script was not quite correct.
About 3.3.70 (and all the intermediate versions) During the last days I made more frequent checkins, so this time you'll get a whole bunch of diffs in one swoop.
We have a new OS/2 port, thanks to Bart!
I clarified the behaviour of '//' comments with respect of line ends.
Configuration of mySQL should be more reliable now. Especially, the definable path is now used for both include and library searches.
The type checking for function redefinitions has been relaxed. A non-mixed argument can be redefined as mixed, and vice versa.
An experimental new hook H_SEND_NOTIFY_FAIL can be used to have more control over the notify_fail handling.
Another experimental feature: it is now possible to define a default visibility for variables and functions.
Commandline arguments can now be read from a textfile using the new --args option. And yes, this behaviour can be nested.
About 3.3.65
A couple of new bugfixes - one fixing a crasher which happened during a garbage collection of call_outs with destructed command givers.
The name and path of the WIZLIST file can now be configured as compile time and also as runtime option (--wizlist-file). Best would be to take it out of the driver completely, though.
About 3.3.64
Added a new mySQL efun: db_error(). It might not compile, though :-)
Hopefully removed a crasher in the new cleanup behaviour.
About 3.3.63
Some small changes; the most important being that global variables can no longer be redefined.
About 3.3.62
Well, zeroing the closures bound to an destructed object kind of pulled the rug from under apply() and funcall() which got confused in their stack cleanup if the closure in question selfdestructed. A typical case of I-don't-need-to-check-the-type optimized function calls.
About 3.3.61
When destructing an object, all closures referencing this object and currently stored in local variables are zeroed out, too.
Bugfixes to the strstr() and db_connect() efun, and in the internal size computation of mappings.
Keyword nosave is now a permanent feature of LPC.
About 3.3.60
Dear oh dear. The type checking on function return proved to be too strict, so I had to take it out again.
About 3.3.59
I admit being a bit lazy over the last two weeks - but the weather outside is just too nice, and my new mountain bike just begs to be ridden. But here are a couple of bug fixes and small improvments.
It is now possible to embed literal \0s in strings.
The Garbage Collector failed to trace a recently introduced pointer reference, potentially allowing the freeing of objects with references pending. It has to be seen if this was the reason for the crashes TubMud experienced lately.
Integers and floats can now be compared with each other.
Small improvements to the type tracking in the compiler.
About 3.3.58
Fixed a crasher: the more aggressive cleanup introduced in dev-291 occasionally crashed on objects, which are destructed right after they scheduled a program replacement.
Efuns terminal_colour() and regreplace() can now use closures to determine the replacement texts.
Removed a crasher in the efun say().
About 3.3.57
I made a small improvement to the clean_up handling to allow more chained clean ups.
The regexp cache was a bit sloppy in comparing the regexps, sometimes re-using the wrong regexp.
A small bug in the new mappings code crashed the driver occasionally.
About 3.3.56
An important correction: lambda() did not compile simul efuns with extended varargs correctly, occasionally crashing the driver.
About 3.3.55
I had to undo the casting change, as it broke a common idiom which interprets the number 0 as NIL values, for example s = (string) foo->bar(); if (s) ....
And a correction to sscanf(): the format '%s%d' did not always work.
About 3.3.54
Gallivanting around the world in order to throw rice at my brother's wedding did not completely use up all my time, so here are a couple bugfixes adapted from the 3.2 line.
Added a simple protection against reference loops, and improved the type tracking of the & operator.
Casting of unknown or mixed values now generates a proper type conversion. This especially means that (string)0 no longer returns the number 0, but instead the string "0".
Added basic support for the MorgenGrauen 3.2.6 mudlib and the 3.2.9 driver - I haven't tried to run it with 3.3 yet (Chicago O'Hare airport is quite a distracting place to hack at).
About 3.3.53
Time for a new full-size release.
Some bugfixes: subtracting arrays didn't work properly; efun m_values() was a bit confused about the width of its argument mappings; and nested inline closure definitions generated spurious warnings.
About 3.3.52
A drastic cut in the hosts/ section: Ataris and OS/2 are no longer supported; Amiga is supported only in the gcc/ixemul environment. Reason is that I can't keep ports up to date which I can't test myself, and get no feedback on either.
About 3.3.51
Freeing empty mappings sometimes clobbered memory.
The configuration script lacked one replacement instruction in the generation of config.h .
The number of call_outs as returned by debug_info() became when call_outs were removed or became stale.
Two corrections to the sprintf() function: '%^' no longer eats the next character, and the field size given with a leading 0 now really prints leading 0s, and doesn't use them as generic pad string.
About 3.3.49 and .50
Pre-increment or -decrement of an uninitialized variable caused the LPC compiler to crash.
Alists are now an optional package. By default it is not selected, however, I added it to all known mud settings.
And of course after I checked in 3.3.49 I realised that I forgot to recreate the configure script - and thus 3.3.50 came to life.
About 3.3.48
Ok, the mapping code is now rewritten. Initially I experimented with an alternative way of storing the data in memory (the mapping2.c from two days ago), but in the end I came back Amylaar's initial scheme. Just now the layout and the code are more straightforward and easier to maintain.
Small bugfix in efun sgn().
And efun copy_mapping() is gone on account of being obsolete.
About 3.3.47
I started rewriting the mapping code into something more maintainable, buts its far from ready yet. If you're curious, take a look at mapping2.c.
Fixed a crasher: allocate( ({ 0 }) ) was bad mojo.
The LPC compiler created faulty lookup tables for closely consecutive case ranges. For example
         switch(x) {
         case 3..100: write("3..100\n"); break;
         case -2..-1: write("-2..-1\n"); break;
         case 1..2: write("1..2\n"); break;
       }
would print "1..2" if x was 0. The bug depended much on the number and type of case statements, which explains why it went undetected for so long.
About 3.3.46
The changes to the mapping code still had a couple of fatal bugs.
About 3.3.44 and .45
A new runtime limit: the maximum number of callouts in the whole game. As usual the default is specified at compile time, it can be set on the commandline with --max-callouts, and it can be changed temporarily with the limited() efun.
foreach() can now iterate over references, integers and integer arrays.
Fixed a hidden crasher in free_svalue().
About 3.3.43
Redefining an inherited private heart_beat() with a public one didn't work.
debug_info(DINFO_DATA, DID_STATUS) was too slow.
Local variables can now have the same names as global functions; the compiler will sort them out depending on the context.
About 3.3.41 and .42
Lfun- and variable closures can be used in array intersections and sensibly as keys in mappings.
sprintf() is now more compatible with terminal_colour() in that the formatstring '%^' expands to itself.
Some bugfixes.
About 3.3.40
Wildcarded super calls messed up the interpreter stack.
An external master update via the SIGUSR1 signal now also updates all programs inherited by the master.
Some small bugfixes.
About 3.3.39
Small corrections to the allocator and the Makefile, but the main point is to release a fresh full archive.
About 3.3.38
Lots of bugfixes for the '...' operator. It's amazing that my simple tests with 3.3.37 worked at all.
On Darwin, the system allocator returned memory in multiples of 64 Bytes, which led to wasted memory in the large block area. This has been fixed.
About 3.3.37
I added the operator '...' to flatten arrays in function argument lists. For example: fun(m..., 1) is equivalent to fun(m[0], m[1], ..., m[<1], 1).
There was an occasional crasher in restore_object().
About 3.3.36
Oops, I broke the Makefiles.
Gawain provided a new efun: md5_encrypt() to create MD5 message digests.
About 3.3.35
Accidentally I broke the inheriting of identifiers, and of course my own tests didn't detect that.
I think I made the compilation less warningful under Darwin.
I made the docs look a bit nicer (spaces instead of tabs).
About 3.3.34
This new version fixes a couple of bugs: a nasty crasher when you #define the name of an inline closure to something else (who in their right mind would do that anyway? :-); using charmode with TinyFugue did not work properly; all <op>= assignment operators can now take an indexed string character on the lefthand side; and lambda closures now generate proper bytecodes.
When the mudlib generates the name of an include file, it can now start with leading '/'.
About 3.3.33
A really embarassing bug: multiplying a string by 0 clobbered memory.
About 3.3.32
Two more bugfixes.
Since I had a bit of time, I extended efun allocate() to be able to create multidimensional arrays, and to initialise them with an arbitrary value.
Variable swapping is now less cautious with soon-due resets. Before, it hardly every swapped in some muds.
About 3.3.31 Since I spent most of the weekend mastering the art of skiing, only a small update this time:
Two new mySQL efuns, db_coldefs() and db_insert_id(), courtesy of Dafire.
functionlist() does not really work well when you specify flags to filter out unwanted functions - this is still being worked on.
About 3.3.30
String comparisons were still slightly buggy, occasionally failing to detect equality (e.g. #if __FILE__ == "/std/foo.c".
The runtime type testing failed for all but the first argument of efuns - this has been fixed.
The extensive debug logging in xerq has been turned off.
About 3.3.29
More bugfixes. This time I fixed a couple of bugs which didn't show up on AIX/powerpc, but on Linux/x86.
About 3.3.28
It's almost boring: lots of small changes to iron out the kings. At least the driver can now run Evermore-native on AIX without obvious problems; and Unitopia at least boots.
About 3.3.27
Bugfixes, bugfixes. The driver can now run lp-245 and boot into Evermore-native.
Copied the Darwin adaptions from 3.2.9-dev.264.
About 3.3.26
Ok, it didn't quite compile. But now it does, and we can even run the dhrystone test.
About 3.3.25
Woohoo! The driver is now stable enough to boot the test_master.c and log into it.
And I brought the driver up to sync with 3.2.9-dev.263.
About 3.3.24
Well, it has been months, not just weeks; but the conversion of the internal string management is complete. It still has to be debugged, of course.
About 3.3.4
The configuration for mySQL was broken - sorry about that. I really shouldn't do such things when pressed for time. It might still malfunction in places, I'm going to look into it tomorrow.
This is going to the the last public development version for some time: over the next weeks I plan to overhaul the internal string management, which will render the driver incompilable until it's all done.

However, I'll update the page with the Changelogs as I progress.

About 3.3.3
Uwe und Fiona found a bug in the IPv6 name lookup in the xerq: a buffer was freed twice, causing the xerq to crash.
The mySQL support is now part of the driver proper and can be activated with a configuration switch.
New LPC macros return the various parts of the driver version.
Removed all the obsolete and deprecated efuns, which were just aliases to other efuns anyway.
About 3.3.2
The first public release of the 3.3 branch, this implements a thorough change in the byte code generation. Almost all efuns are now 'tabled', which greatly simplifies the argument checking and passing, and also reduces the complexity of the interpreter loop. As a side effect, the error messages regarding faulty arguments are much more informative.

Detailed changes since 3.2

30-Sep-2007 (Lars Duening) 3.3.715
04-Nov-2006 (Lars Duening, Philip Hancke)
(Back to the top.)
09-Jul-2006 (Lars Duening) 3.3.714  (diff to 3.3.713: 33 KB: http)
14-Jun-2006 (Lars Duening)
12-Jun-2006 (Lars Duening)
09-May-2006 (Lars Duening)
06-May-2006 (Lars Duening)
06-May-2006 (Gnomi)
23-Apr-2006 (Lars Duening)
30-Mar-2006 (Lars Duening)
27-Mar-2006 (Lars Duening)
18-Mar-2006 (Gnomi)
16-Mar-2006 (Lars Duening)
14-Mar-2006 (Gnomi)
(Back to the top.)
24-Nov-2005 (Lars Duening) 3.3.712  (diff to 3.3.711: 9 KB: http)
24-Nov-2005 (Gnomi)
09-Oct-2005 (Lars Duening)
08-Oct-2005 (Lars Duening)
31-Oct-2005 (Philipp Hancke)
(Back to the top.)
30-Oct-2005 (Lars Duening) 3.3.711  (diff to 3.3.710: 31 KB: http)
29-Oct-2005 (Lars Duening)
19-Oct-2005 (Lars Duening)
11-Oct-2005 (Lars Duening)
10-Oct-2005 (Lars Duening)
09-Oct-2005 (Lars Duening)
04-Oct-2005 (Lars Duening)
28-Sep-2005 (Lars Duening)
23-Aug-2005 (Lars Duening)
(Back to the top.)
20-Jun-2005 (Lars Duening) 3.3.710  (diff to 3.3.709: 3 KB: http)
(Back to the top.)
20-Jun-2005 (Lars Duening) 3.3.709  (diff to 3.3.708: 2 KB: http)
(Back to the top.)
19-Jun-2005 (Lars Duening) 3.3.708  (diff to 3.3.705: 16 KB: http)
10-Jun-2005 (Lars Duening) (3.3.707)
06-Jun-2005 (Lars Duening) (3.3.706)
(Back to the top.)
15-May-2005 (Lars Duening) 3.3.705  (diff to 3.3.687: 104 KB: http)  (diff to 3.3.704: 4 KB: http)
(Back to the top.)
15-May-2005 (Lars Duening) 3.3.704  (diff to 3.3.703: 2 KB: http)
(Back to the top.)
15-May-2005 (Lars Duening) 3.3.703  (diff to 3.3.702: 2 KB: http)
(Back to the top.)
14-May-2005 (Lars Duening) 3.3.702  (diff to 3.3.701: 3 KB: http)
(Back to the top.)
13-May-2005 (Lars Duening) 3.3.701  (diff to 3.3.700: 2 KB: http)
(Back to the top.)
13-May-2005 (Lars Duening) 3.3.700  (diff to 3.3.699: 2 KB: http)
(Back to the top.)
24-Apr-2005 (Lars Duening) 3.3.699  (diff to 3.3.698: 6 KB: http)
(Back to the top.)
01-Apr-2005 (Lars Duening) 3.3.698  (diff to 3.3.695: 41 KB: http)
01-Apr-2005 (Lars Duening) (3.3.696, .697)
(Back to the top.)
27-Mar-2005 (Lars Duening) 3.3.695  (diff to 3.3.694: 3 KB: http)
(Back to the top.)
27-Mar-2005 (Lars Duening) 3.3.694  (diff to 3.3.693: 4 KB: http)
(Back to the top.)
27-Mar-2005 (Lars Duening) 3.3.693  (diff to 3.3.692: 9 KB: http)
(Back to the top.)
25-Mar-2005 (Lars Duening) 3.3.692  (diff to 3.3.691: 5 KB: http)
(Back to the top.)
24-Mar-2005 (Lars Duening) 3.3.691  (diff to 3.3.690: 8 KB: http)
(Back to the top.)
20-Mar-2005 (Lars Duening) 3.3.690  (diff to 3.3.689: 36 KB: http)
(Back to the top.)
18-Mar-2005 (Lars Duening) 3.3.689  (diff to 3.3.688: 2 KB: http)
(Back to the top.)
17-Mar-2005 (Lars Duening) 3.3.688  (diff to 3.3.687: 3 KB: http)
(Back to the top.)
13-Mar-2005 (Lars Duening) 3.3.687  (diff to 3.3.672: 70 KB: http)  (diff to 3.3.686: 11 KB: http)
(Back to the top.)
12-Mar-2005 (Lars Duening) 3.3.686  (diff to 3.3.685: 7 KB: http)
(Back to the top.)
09-Mar-2005 (Lars Duening) 3.3.685  (diff to 3.3.684: 4 KB: http)
(Back to the top.)
06-Mar-2005 (Lars Duening) 3.3.684  (diff to 3.3.683: 14 KB: http)
(Back to the top.)
26-Feb-2005 (Lars Duening) 3.3.683  (diff to 3.3.682: 2 KB: http)
(Back to the top.)
26-Feb-2005 (Lars Duening) 3.3.682  (diff to 3.3.681: 8 KB: http)
(Back to the top.)
24-Feb-2005 (Lars Duening) 3.3.681  (diff to 3.3.678: 23 KB: http)
24-Feb-2004 (Lars Duening) (3.3.680)
21-Feb-2004 (Lars Duening) (3.3.679)
(Back to the top.)
21-Feb-2005 (Lars Duening) 3.3.678  (diff to 3.3.677: 5 KB: http)
(Back to the top.)
20-Feb-2005 (Lars Duening) 3.3.677  (diff to 3.3.676: 11 KB: http)
(Back to the top.)
20-Feb-2005 (Lars Duening) 3.3.676  (diff to 3.3.675: 2 KB: http)
(Back to the top.)
20-Feb-2005 (Lars Duening) 3.3.675  (diff to 3.3.674: 2 KB: http)
(Back to the top.)
20-Feb-2005 (Lars Duening) 3.3.674  (diff to 3.3.673: 4 KB: http)
(Back to the top.)
20-Feb-2005 (Lars Duening) 3.3.673  (diff to 3.3.672: 4 KB: http)
(Back to the top.)
13-Feb-2005 (Lars Duening) 3.3.672  (diff to 3.3.659: 74 KB: http)  (diff to 3.3.671: 7 KB: http)
(Back to the top.)
12-Feb-2005 (Lars Duening) 3.3.671  (diff to 3.3.670: 2 KB: http)
(Back to the top.)
12-Feb-2005 (Lars Duening) 3.3.670  (diff to 3.3.669: 4 KB: http)
(Back to the top.)
09-Feb-2005 (Lars Duening) 3.3.669  (diff to 3.3.668: 9 KB: http)
(Back to the top.)
07-Feb-2005 (Lars Duening) 3.3.668  (diff to 3.3.667: 12 KB: http)
(Back to the top.)
01-Feb-2005 (Lars Duening) 3.3.667  (diff to 3.3.666: 3 KB: http)
(Back to the top.)
31-Jan-2005 (Lars Duening) 3.3.666  (diff to 3.3.665: 7 KB: http)
(Back to the top.)
30-Jan-2005 (Lars Duening) 3.3.665  (diff to 3.3.664: 2 KB: http)
(Back to the top.)
30-Jan-2005 (Lars Duening) 3.3.664  (diff to 3.3.663: 43 KB: http)
(Back to the top.)
22-Jan-2005 (Lars Duening) 3.3.663  (diff to 3.3.662: 3 KB: http)
(Back to the top.)
22-Jan-2005 (Lars Duening) 3.3.662  (diff to 3.3.661: 3 KB: http)
(Back to the top.)
19-Jan-2005 (Lars Duening) 3.3.661  (diff to 3.3.660: 2 KB: http)
(Back to the top.)
17-Jan-2005 (Lars Duening) 3.3.660  (diff to 3.3.659: 2 KB: http)
(Back to the top.)
17-Jan-2005 (Lars Duening) 3.3.659  (diff to 3.3.650: 17 KB: http)  (diff to 3.3.658: 3 KB: http)
(Back to the top.)
15-Jan-2005 (Lars Duening) 3.3.658  (diff to 3.3.655: 7 KB: http)
14-Jan-2004 (Lars Duening) (3.3.657)
14-Jan-2004 (Lars Duening) (3.3.656)
(Back to the top.)
14-Jan-2005 (Lars Duening) 3.3.655  (diff to 3.3.653: 7 KB: http)
(Back to the top.)
14-Jan-2005 (Lars Duening) 3.3.654
(Back to the top.)
13-Jan-2005 (Lars Duening) 3.3.653  (diff to 3.3.652: 2 KB: http)
(Back to the top.)
12-Jan-2005 (Lars Duening) 3.3.652  (diff to 3.3.651: 3 KB: http)
(Back to the top.)
10-Jan-2005 (Lars Duening) 3.3.651  (diff to 3.3.650: 2 KB: http)
(Back to the top.)
09-Jan-2005 (Lars Duening) 3.3.650  (diff to 3.3.632: 52 KB: http)  (diff to 3.3.649: 3 KB: http)
(Back to the top.)
09-Jan-2005 (Lars Duening) 3.3.649  (diff to 3.3.648: 5 KB: http)
(Back to the top.)
08-Jan-2005 (Lars Duening) 3.3.648  (diff to 3.3.647: 5 KB: http)
(Back to the top.)
08-Jan-2005 (Lars Duening) 3.3.647  (diff to 3.3.646: 2 KB: http)
(Back to the top.)
08-Jan-2005 (Lars Duening) 3.3.646  (diff to 3.3.645: 5 KB: http)
(Back to the top.)
08-Jan-2005 (Lars Duening) 3.3.645  (diff to 3.3.644: 6 KB: http)
(Back to the top.)
04-Jan-2005 (Lars Duening) 3.3.644  (diff to 3.3.643: 2 KB: http)
(Back to the top.)
31-Dec-2004 (Lars Duening) 3.3.643  (diff to 3.3.642: 2 KB: http)
(Back to the top.)
31-Dec-2004 (Lars Duening) 3.3.642  (diff to 3.3.641: 8 KB: http)
(Back to the top.)
29-Dec-2004 (Lars Duening) 3.3.641  (diff to 3.3.640: 6 KB: http)
(Back to the top.)
29-Dec-2004 (Lars Duening) 3.3.640  (diff to 3.3.639: 8 KB: http)
(Back to the top.)
28-Dec-2004 (Lars Duening) 3.3.639  (diff to 3.3.638: 5 KB: http)
(Back to the top.)
28-Dec-2004 (Lars Duening) 3.3.638  (diff to 3.3.637: 8 KB: http)
(Back to the top.)
23-Dec-2004 (Lars Duening) 3.3.637  (diff to 3.3.636: 5 KB: http)
(Back to the top.)
23-Dec-2004 (Lars Duening) 3.3.636  (diff to 3.3.635: 6 KB: http)
(Back to the top.)
22-Dec-2004 (Lars Duening) 3.3.635  (diff to 3.3.634: 5 KB: http)
(Back to the top.)
22-Dec-2004 (Lars Duening) 3.3.634  (diff to 3.3.633: 4 KB: http)
(Back to the top.)
22-Dec-2004 (Lars Duening) 3.3.633  (diff to 3.3.632: 3 KB: http)
(Back to the top.)
22-Dec-2004 (Lars Duening) 3.3.632  (diff to 3.3.620: 13 KB: http)  (diff to 3.3.631: 5 KB: http)
(Back to the top.)
18-Dec-2004 (Lars Duening) 3.3.631  (diff to 3.3.630: 2 KB: http)
(Back to the top.)
17-Dec-2004 (Lars Duening) 3.3.630  (diff to 3.3.629: 3 KB: http)
(Back to the top.)
11-Dec-2004 (Lars Duening) 3.3.629  (diff to 3.3.628: 3 KB: http)
(Back to the top.)
10-Dec-2004 (Lars Duening) 3.3.628  (diff to 3.3.627: 2 KB: http)
(Back to the top.)
07-Dec-2004 (Lars Duening) 3.3.627  (diff to 3.3.626: 2 KB: http)
(Back to the top.)
06-Dec-2004 (Lars Duening) 3.3.626  (diff to 3.3.625: 2 KB: http)
(Back to the top.)
03-Dec-2004 (Lars Duening) 3.3.625  (diff to 3.3.623: 3 KB: http)
(Back to the top.)
30-Nov-2004 (Lars Duening) 3.3.623  (diff to 3.3.622: 2 KB: http)
(Back to the top.)
29-Nov-2004 (Lars Duening) 3.3.622  (diff to 3.3.621: 2 KB: http)
(Back to the top.)
27-Nov-2004 (Lars Duening) 3.3.621  (diff to 3.3.620: 2 KB: http)
(Back to the top.)
26-Nov-2004 (Lars Duening) 3.3.620  (diff to 3.3.610: 696 KB: http)  (diff to 3.3.619: 679 KB: http)
(Back to the top.)
26-Nov-2004 (Lars Duening) 3.3.619  (diff to 3.3.617: 2 KB: http)
(Back to the top.)
25-Nov-2004 (Lars Duening) 3.3.617  (diff to 3.3.616: 3 KB: http)
(Back to the top.)
24-Nov-2004 (Lars Duening) 3.3.616  (diff to 3.3.615: 12 KB: http)
(Back to the top.)
22-Nov-2004 (Lars Duening) 3.3.615  (diff to 3.3.614: 2 KB: http)
(Back to the top.)
15-Nov-2004 (Lars Duening) 3.3.614  (diff to 3.3.613: 2 KB: http)
(Back to the top.)
13-Nov-2004 (Lars Duening) 3.3.613  (diff to 3.3.612: 2 KB: http)
(Back to the top.)
13-Nov-2004 (Lars Duening) 3.3.612  (diff to 3.3.611: 2 KB: http)
(Back to the top.)
11-Nov-2004 (Lars Duening) 3.3.611  (diff to 3.3.610: 5 KB: http)
(Back to the top.)
30-Oct-2004 (Lars Duening) 3.3.610  (diff to 3.3.600: 19 KB: http)  (diff to 3.3.609: 4 KB: http)
(Back to the top.)
26-Oct-2004 (Lars Duening) 3.3.609  (diff to 3.3.608: 3 KB: http)
(Back to the top.)
24-Oct-2004 (Lars Duening) 3.3.608  (diff to 3.3.607: 3 KB: http)
(Back to the top.)
14-Oct-2004 (Lars Duening) 3.3.607  (diff to 3.3.606: 3 KB: http)
(Back to the top.)
11-Oct-2004 (Lars Duening) 3.3.606  (diff to 3.3.605: 2 KB: http)
(Back to the top.)
29-Sep-2004 (Lars Duening) 3.3.605  (diff to 3.3.604: 2 KB: http)
(Back to the top.)
27-Sep-2004 (Lars Duening) 3.3.604  (diff to 3.3.603: 3 KB: http)
(Back to the top.)
16-Sep-2004 (Lars Duening) 3.3.603  (diff to 3.3.602: 8 KB: http)
(Back to the top.)
15-Sep-2004 (Lars Duening) 3.3.602  (diff to 3.3.601: 3 KB: http)
(Back to the top.)
12-Sep-2004 (Lars Duening) 3.3.601  (diff to 3.3.600: 4 KB: http)
(Back to the top.)
12-Sep-2004 (Lars Duening) 3.3.600  (diff to 3.3.587: 37 KB: http)  (diff to 3.3.599: 6 KB: http)
(Back to the top.)
09-Sep-2004 (Lars Duening) 3.3.599  (diff to 3.3.598: 4 KB: http)
(Back to the top.)
07-Sep-2004 (Lars Duening) 3.3.598  (diff to 3.3.597: 4 KB: http)
(Back to the top.)
06-Sep-2004 (Lars Duening) 3.3.597  (diff to 3.3.596: 3 KB: http)
(Back to the top.)
05-Sep-2004 (Lars Duening) 3.3.596  (diff to 3.3.593: 19 KB: http)
04-Sep-2004 (Lars Duening) (3.3.595)
04-Sep-2004 (Lars Duening) (3.3.594)
(Back to the top.)
04-Sep-2004 (Lars Duening) 3.3.593  (diff to 3.3.592: 6 KB: http)
(Back to the top.)
04-Sep-2004 (Lars Duening) 3.3.592  (diff to 3.3.591: 8 KB: http)
(Back to the top.)
01-Sep-2004 (Lars Duening) 3.3.591  (diff to 3.3.590: 2 KB: http)
(Back to the top.)
30-Aug-2004 (Lars Duening) 3.3.590  (diff to 3.3.589: 3 KB: http)
(Back to the top.)
23-Aug-2004 (Lars Duening) 3.3.589  (diff to 3.3.588: 2 KB: http)
(Back to the top.)
23-Aug-2004 (Lars Duening) 3.3.588  (diff to 3.3.587: 2 KB: http)
(Back to the top.)
22-Aug-2004 (Lars Duening) 3.3.587  (diff to 3.3.580: 37 KB: http)  (diff to 3.3.586: 20 KB: http)
(Back to the top.)
21-Aug-2004 (Lars Duening) 3.3.586  (diff to 3.3.585: 3 KB: http)
(Back to the top.)
19-Aug-2004 (Lars Duening) 3.3.585  (diff to 3.3.584: 5 KB: http)
(Back to the top.)
08-Aug-2004 (Lars Duening) 3.3.584  (diff to 3.3.583: 4 KB: http)
(Back to the top.)
01-Aug-2004 (Lars Duening) 3.3.583  (diff to 3.3.582: 3 KB: http)
(Back to the top.)
29-Jul-2004 (Lars Duening) 3.3.582  (diff to 3.3.581: 2 KB: http)
(Back to the top.)
28-Jul-2004 (Lars Duening) 3.3.581  (diff to 3.3.580: 9 KB: http)
(Back to the top.)
25-Jul-2004 (Lars Duening) 3.3.580  (diff to 3.3.571: 18 KB: http)  (diff to 3.3.579: 4 KB: http)
(Back to the top.)
25-Jul-2004 (Lars Duening) 3.3.579  (diff to 3.3.578: 3 KB: http)
(Back to the top.)
25-Jul-2004 (Lars Duening) 3.3.578  (diff to 3.3.577: 5 KB: http)
(Back to the top.)
21-Jul-2004 (Lars Duening) 3.3.577  (diff to 3.3.576: 4 KB: http)
(Back to the top.)
16-Jul-2004 (Lars Duening) 3.3.576  (diff to 3.3.575: 2 KB: http)
(Back to the top.)
14-Jul-2004 (Lars Duening) 3.3.575  (diff to 3.3.574: 5 KB: http)
(Back to the top.)
13-Jul-2004 (Lars Duening) 3.3.574  (diff to 3.3.573: 3 KB: http)
(Back to the top.)
12-Jul-2004 (Lars Duening) 3.3.573  (diff to 3.3.572: 2 KB: http)
(Back to the top.)
11-Jul-2004 (Lars Duening) 3.3.572  (diff to 3.3.571: 4 KB: http)
(Back to the top.)
10-Jul-2004 (Lars Duening) 3.3.571  (diff to 3.3.564: 410 KB: http)  (diff to 3.3.570: 2 KB: http)
(Back to the top.)
10-Jul-2004 (Lars Duening) 3.3.570  (diff to 3.3.568: 401 KB: http)
08-Jul-2004 (Lars Duening) 3.3.569
(Back to the top.)
01-Jul-2004 (Lars Duening) 3.3.568  (diff to 3.3.567: 3 KB: http)
(Back to the top.)
29-Jun-2004 (Lars Duening) 3.3.567  (diff to 3.3.566: 2 KB: http)
(Back to the top.)
21-Jun-2004 (Lars Duening) 3.3.566  (diff to 3.3.565: 4 KB: http)
(Back to the top.)
14-Jun-2004 (Lars Duening) 3.3.565  (diff to 3.3.564: 8 KB: http)
(Back to the top.)
30-May-2004 (Lars Duening) 3.3.564  (diff to 3.3.558: 23 KB: http)  (diff to 3.3.563: 3 KB: http)
(Back to the top.)
30-May-2004 (Lars Duening) 3.3.563  (diff to 3.3.562: 12 KB: http)
(Back to the top.)
28-May-2004 (Lars Duening) 3.3.562  (diff to 3.3.561: 4 KB: http)
(Back to the top.)
26-May-2004 (Lars Duening) 3.3.561  (diff to 3.3.560: 2 KB: http)
(Back to the top.)
25-May-2004 (Lars Duening) 3.3.560  (diff to 3.3.559: 8 KB: http)
(Back to the top.)
24-May-2004 (Lars Duening) 3.3.559  (diff to 3.3.558: 5 KB: http)
(Back to the top.)
23-May-2004 (Lars Duening) 3.3.558  (diff to 3.3.548: 26 KB: http)  (diff to 3.3.556: 3 KB: http)
23-May-2004 (Lars Duening) 3.3.557
(Back to the top.)
23-May-2004 (Lars Duening) 3.3.556  (diff to 3.3.555: 6 KB: http)
(Back to the top.)
23-May-2004 (Lars Duening) 3.3.555  (diff to 3.3.554: 4 KB: http)
(Back to the top.)
21-May-2004 (Lars Duening) 3.3.554  (diff to 3.3.553: 5 KB: http)
(Back to the top.)
20-May-2004 (Lars Duening) 3.3.553  (diff to 3.3.552: 3 KB: http)
(Back to the top.)
19-May-2004 (Lars Duening) 3.3.552  (diff to 3.3.551: 5 KB: http)
(Back to the top.)
18-May-2004 (Lars Duening) 3.3.551  (diff to 3.3.550: 4 KB: http)
(Back to the top.)
18-May-2004 (Lars Duening) 3.3.550  (diff to 3.3.549: 2 KB: http)
(Back to the top.)
17-May-2004 (Lars Duening) 3.3.549  (diff to 3.3.548: 8 KB: http)
(Back to the top.)
16-May-2004 (Lars Duening) 3.3.548  (diff to 3.3.538: 47 KB: http)  (diff to 3.3.547: 3 KB: http)
(Back to the top.)
15-May-2004 (Lars Duening) 3.3.547  (diff to 3.3.546: 4 KB: http)
(Back to the top.)
14-May-2004 (Lars Duening) 3.3.546  (diff to 3.3.545: 2 KB: http)
(Back to the top.)
13-May-2004 (Lars Duening) 3.3.545  (diff to 3.3.544: 7 KB: http)
(Back to the top.)
12-May-2004 (Lars Duening) 3.3.544  (diff to 3.3.543: 4 KB: http)
(Back to the top.)
11-May-2004 (Lars Duening) 3.3.543  (diff to 3.3.542: 3 KB: http)
(Back to the top.)
10-May-2004 (Lars Duening) 3.3.542  (diff to 3.3.541: 15 KB: http)
(Back to the top.)
09-May-2004 (Lars Duening) 3.3.541  (diff to 3.3.540: 8 KB: http)
(Back to the top.)
08-May-2004 (Lars Duening) 3.3.540  (diff to 3.3.539: 8 KB: http)
(Back to the top.)
06-May-2004 (Lars Duening) 3.3.539  (diff to 3.3.538: 10 KB: http)
(Back to the top.)
02-May-2004 (Lars Duening) 3.3.538  (diff to 3.3.531: 23 KB: http)  (diff to 3.3.537: 3 KB: http)
(Back to the top.)
30-Apr-2004 (Lars Duening) 3.3.537  (diff to 3.3.536: 4 KB: http)
(Back to the top.)
28-Apr-2004 (Lars Duening) 3.3.536  (diff to 3.3.535: 4 KB: http)
(Back to the top.)
27-Apr-2004 (Lars Duening) 3.3.535  (diff to 3.3.534: 5 KB: http)
(Back to the top.)
27-Apr-2004 (Lars Duening) 3.3.534  (diff to 3.3.533: 5 KB: http)
(Back to the top.)
27-Apr-2004 (Lars Duening) 3.3.533  (diff to 3.3.532: 3 KB: http)
(Back to the top.)
26-Apr-2004 (Lars Duening) 3.3.532  (diff to 3.3.531: 10 KB: http)
(Back to the top.)
24-Apr-2004 (Lars Duening) 3.3.531  (diff to 3.3.523: 40 KB: http)  (diff to 3.3.530: 11 KB: http)
(Back to the top.)
24-Apr-2004 (Lars Duening) 3.3.530  (diff to 3.3.529: 3 KB: http)
(Back to the top.)
24-Apr-2004 (Lars Duening) 3.3.529  (diff to 3.3.527: 16 KB: http)
24-Apr-2004 (Lars Duening) 3.3.529
(Back to the top.)
23-Apr-2004 (Lars Duening) 3.3.527  (diff to 3.3.526: 3 KB: http)
(Back to the top.)
22-Apr-2004 (Lars Duening) 3.3.526  (diff to 3.3.525: 8 KB: http)
(Back to the top.)
22-Apr-2004 (Lars Duening) 3.3.525  (diff to 3.3.524: 8 KB: http)
(Back to the top.)
20-Apr-2004 (Lars Duening) 3.3.524  (diff to 3.3.523: 4 KB: http)
(Back to the top.)
18-Apr-2004 (Lars Duening) 3.3.523  (diff to 3.3.510: 131 KB: http)  (diff to 3.3.520: 12 KB: http)
18-Apr-2004 (Lars Duening) 3.3.522
18-Apr-2004 (Lars Duening) 3.3.521
(Back to the top.)
15-Apr-2004 (Lars Duening) 3.3.520  (diff to 3.3.519: 7 KB: http)
(Back to the top.)
14-Apr-2004 (Lars Duening) 3.3.519  (diff to 3.3.518: 2 KB: http)
(Back to the top.)
13-Apr-2004 (Lars Duening) 3.3.518  (diff to 3.3.516: 8 KB: http)
(Back to the top.)
13-Apr-2004 (Lars Duening) 3.3.517
(Back to the top.)
13-Apr-2004 (Lars Duening) 3.3.516  (diff to 3.3.515: 3 KB: http)
(Back to the top.)
12-Apr-2004 (Lars Duening) 3.3.515  (diff to 3.3.514: 15 KB: http)
(Back to the top.)
11-Apr-2004 (Lars Duening) 3.3.514  (diff to 3.3.513: 4 KB: http)
(Back to the top.)
11-Apr-2004 (Lars Duening) 3.3.513  (diff to 3.3.512: 4 KB: http)
(Back to the top.)
09-Apr-2004 (Lars Duening) 3.3.512  (diff to 3.3.511: 93 KB: http)
(Back to the top.)
06-Apr-2004 (Lars Duening) 3.3.511  (diff to 3.3.510: 3 KB: http)
04-Apr-2004 (Lars Duening)
(Back to the top.)
03-Apr-2004 (Lars Duening) 3.3.510  (diff to 3.3.499: 30 KB: http)  (diff to 3.3.509: 8 KB: http)
(Back to the top.)
03-Apr-2004 (Lars Duening) 3.3.509  (diff to 3.3.508: 4 KB: http)
(Back to the top.)
03-Apr-2004 (Lars Duening) 3.3.508  (diff to 3.3.507: 3 KB: http)
(Back to the top.)
01-Apr-2004 (Lars Duening) 3.3.507  (diff to 3.3.506: 3 KB: http)
(Back to the top.)
31-Mar-2004 (Lars Duening) 3.3.506  (diff to 3.3.505: 3 KB: http)
(Back to the top.)
30-Mar-2004 (Lars Duening) 3.3.505  (diff to 3.3.504: 9 KB: http)
(Back to the top.)
28-Mar-2004 (Lars Duening) 3.3.504  (diff to 3.3.503: 4 KB: http)
(Back to the top.)
27-Mar-2004 (Lars Duening) 3.3.503  (diff to 3.3.502: 6 KB: http)
(Back to the top.)
23-Mar-2004 (Lars Duening) 3.3.502  (diff to 3.3.501: 3 KB: http)
(Back to the top.)
22-Mar-2004 (Lars Duening) 3.3.501  (diff to 3.3.500: 4 KB: http)
(Back to the top.)
24-Feb-2004 (Lars Duening) 3.3.500  (diff to 3.3.499: 2 KB: http)
(Back to the top.)
22-Feb-2004 (Lars Duening) 3.3.499  (diff to 3.3.489: 36 KB: http)  (diff to 3.3.498: 6 KB: http)
(Back to the top.)
19-Dec-2003 (Lars Duening) 3.3.498  (diff to 3.3.497: 2 KB: http)
(Back to the top.)
14-Dec-2003 (Lars Duening) 3.3.497  (diff to 3.3.496: 3 KB: http)
(Back to the top.)
21-Nov-2003 (Lars Duening) 3.3.496  (diff to 3.3.495: 9 KB: http)
(Back to the top.)
18-Nov-2003 (Lars Duening) 3.3.495  (diff to 3.3.494: 10 KB: http)
(Back to the top.)
30-Oct-2003 (Lars Duening) 3.3.494  (diff to 3.3.493: 3 KB: http)
(Back to the top.)
17-Oct-2003 (Lars Duening) 3.3.493  (diff to 3.3.492: 3 KB: http)
(Back to the top.)
15-Oct-2003 (Lars Duening) 3.3.492  (diff to 3.3.491: 12 KB: http)
02-Oct-2003 (Lars Duening)
(Back to the top.)
30-Sep-2003 (Lars Duening) 3.3.491  (diff to 3.3.490: 4 KB: http)
(Back to the top.)
28-Sep-2003 (Lars Duening) 3.3.490  (diff to 3.3.489: 1 KB: http)
(Back to the top.)
27-Sep-2003 (Lars Duening) 3.3.489  (diff to 3.3.483: 37 KB: http)  (diff to 3.3.488: 4 KB: http)
(Back to the top.)
27-Sep-2003 (Lars Duening) 3.3.488  (diff to 3.3.487: 28 KB: http)
(Back to the top.)
27-Sep-2003 (Lars Duening) 3.3.487  (diff to 3.3.486: 3 KB: http)
(Back to the top.)
25-Sep-2003 (Lars Duening) 3.3.486  (diff to 3.3.485: 10 KB: http)
(Back to the top.)
12-Sep-2003 (Lars Duening) 3.3.485  (diff to 3.3.484: 2 KB: http)
(Back to the top.)
02-Sep-2003 (Lars Duening) 3.3.484  (diff to 3.3.483: 3 KB: http)
(Back to the top.)
23-Aug-2003 (Lars Duening) 3.3.483  (diff to 3.3.476: 37 KB: http)  (diff to 3.3.482: 2 KB: http)
(Back to the top.)
21-Aug-2003 (Lars Duening) 3.3.482  (diff to 3.3.481: 15 KB: http)
(Back to the top.)
20-Aug-2003 (Lars Duening) 3.3.481  (diff to 3.3.480: 2 KB: http)
(Back to the top.)
19-Aug-2003 (Lars Duening) 3.3.480  (diff to 3.3.479: 15 KB: http)
(Back to the top.)
14-Aug-2003 (Lars Duening) 3.3.479  (diff to 3.3.478: 4 KB: http)
(Back to the top.)
14-Aug-2003 (Lars Duening) 3.3.478  (diff to 3.3.475: 11 KB: http)
13-Aug-2003 (Lars Duening) (3.3.477)
09-Aug-2003 (Lars Duening) (3.3.476)
(Back to the top.)
09-Aug-2003 (Lars Duening) 3.3.475  (diff to 3.3.467: 52 KB: http)  (diff to 3.3.474: 5 KB: http)
(Back to the top.)
08-Aug-2003 (Lars Duening) 3.3.474  (diff to 3.3.473: 3 KB: http)
(Back to the top.)
08-Aug-2003 (Lars Duening) 3.3.473  (diff to 3.3.472: 27 KB: http)
(Back to the top.)
07-Aug-2003 (Lars Duening) 3.3.472  (diff to 3.3.471: 11 KB: http)
(Back to the top.)
07-Aug-2003 (Lars Duening) 3.3.471  (diff to 3.3.470: 6 KB: http)
(Back to the top.)
05-Aug-2003 (Lars Duening) 3.3.470  (diff to 3.3.469: 7 KB: http)
(Back to the top.)
31-Jul-2003 (Lars Duening) 3.3.469  (diff to 3.3.468: 3 KB: http)
(Back to the top.)
29-Jul-2003 (Lars Duening) 3.3.468  (diff to 3.3.467: 3 KB: http)
(Back to the top.)
28-Jul-2003 (Lars Duening) 3.3.467  (diff to 3.3.453: 30 KB: http)  (diff to 3.3.466: 5 KB: http)
(Back to the top.)
26-Jul-2003 (Lars Duening) 3.3.466  (diff to 3.3.465: 4 KB: http)
(Back to the top.)
25-Jul-2003 (Lars Duening) 3.3.465  (diff to 3.3.464: 7 KB: http)
(Back to the top.)
24-Jul-2003 (Lars Duening) 3.3.464  (diff to 3.3.463: 8 KB: http)
(Back to the top.)
23-Jul-2003 (Lars Duening) 3.3.463  (diff to 3.3.462: 4 KB: http)
(Back to the top.)
21-Jul-2003 (Lars Duening) 3.3.462  (diff to 3.3.461: 3 KB: http)
22-Jul-2003 (Lars Duening)
(Back to the top.)
18-Jul-2003 (Lars Duening) 3.3.461  (diff to 3.3.460: 3 KB: http)
(Back to the top.)
17-Jul-2003 (Lars Duening) 3.3.460  (diff to 3.3.459: 4 KB: http)
(Back to the top.)
17-Jul-2003 (Lars Duening) 3.3.459  (diff to 3.3.458: 4 KB: http)
(Back to the top.)
10-Jul-2003 (Lars Duening) 3.3.458  (diff to 3.3.457: 11 KB: http)
(Back to the top.)
28-Jun-2003 (Lars Duening) 3.3.457  (diff to 3.3.456: 5 KB: http)
26-Jun-2002 (Lars Duening)
(Back to the top.)
25-Jun-2003 (Lars Duening) 3.3.456  (diff to 3.3.455: 7 KB: http)
(Back to the top.)
21-May-2003 (Lars Duening) 3.3.455  (diff to 3.3.454: 12 KB: http)
(Back to the top.)
07-May-2003 (Lars Duening) 3.3.454  (diff to 3.3.453: 3 KB: http)
(Back to the top.)
05-May-2003 (Lars Duening) 3.3.453  (diff to 3.3.448: 24 KB: http)  (diff to 3.3.452: 4 KB: http)
(Back to the top.)
03-May-2003 (Lars Duening) 3.3.452  (diff to 3.3.451: 9 KB: http)
(Back to the top.)
03-May-2003 (Lars Duening) 3.3.451  (diff to 3.3.450: 8 KB: http)
(Back to the top.)
30-Apr-2003 (Lars Duening) 3.3.450  (diff to 3.3.449: 5 KB: http)
(Back to the top.)
29-Apr-2003 (Lars Duening) 3.3.449  (diff to 3.3.448: 5 KB: http)
(Back to the top.)
24-Apr-2003 (Lars Duening) 3.3.448  (diff to 3.3.443: 82 KB: http)  (diff to 3.3.447: 4 KB: http)
(Back to the top.)
22-Apr-2003 (Lars Duening) 3.3.447  (diff to 3.3.446: 54 KB: http)
(Back to the top.)
21-Apr-2003 (Lars Duening) 3.3.446  (diff to 3.3.445: 2 KB: http)
(Back to the top.)
19-Apr-2003 (Lars Duening) 3.3.445  (diff to 3.3.444: 30 KB: http)
(Back to the top.)
13-Apr-2003 (Lars Duening) 3.3.444  (diff to 3.3.443: 2 KB: http)
(Back to the top.)
13-Apr-2003 (Lars Duening) 3.3.443  (diff to 3.3.435: 40 KB: http)  (diff to 3.3.442: 6 KB: http)
(Back to the top.)
12-Apr-2003 (Lars Duening) 3.3.442  (diff to 3.3.441: 1 KB: http)
(Back to the top.)
12-Apr-2003 (Lars Duening) 3.3.441  (diff to 3.3.440: 15 KB: http)
(Back to the top.)
11-Apr-2003 (Lars Duening) 3.3.440  (diff to 3.3.439: 6 KB: http)
(Back to the top.)
09-Apr-2003 (Lars Duening) 3.3.439  (diff to 3.3.438: 7 KB: http)
(Back to the top.)
09-Apr-2003 (Lars Duening) 3.3.438  (diff to 3.3.437: 12 KB: http)
(Back to the top.)
07-Apr-2003 (Lars Duening) 3.3.437  (diff to 3.3.436: 4 KB: http)
(Back to the top.)
04-Apr-2003 (Lars Duening) 3.3.436  (diff to 3.3.435: 3 KB: http)
(Back to the top.)
30-Mar-2003 (Lars Duening) 3.3.435  (diff to 3.3.423: 44 KB: http)  (diff to 3.3.434: 3 KB: http)
(Back to the top.)
29-Mar-2003 (Lars Duening) 3.3.434  (diff to 3.3.433: 5 KB: http)
(Back to the top.)
27-Mar-2003 (Lars Duening) 3.3.433  (diff to 3.3.432: 9 KB: http)
(Back to the top.)
26-Mar-2003 (Lars Duening) 3.3.432  (diff to 3.3.431: 4 KB: http)
(Back to the top.)
25-Mar-2003 (Lars Duening) 3.3.431  (diff to 3.3.430: 6 KB: http)
(Back to the top.)
24-Mar-2003 (Lars Duening) 3.3.430  (diff to 3.3.429: 2 KB: http)
(Back to the top.)
21-Mar-2003 (Lars Duening) 3.3.429  (diff to 3.3.428: 3 KB: http)
(Back to the top.)
20-Mar-2003 (Lars Duening) 3.3.428  (diff to 3.3.427: 9 KB: http)
(Back to the top.)
19-Mar-2003 (Lars Duening) 3.3.427  (diff to 3.3.426: 9 KB: http)
(Back to the top.)
19-Mar-2003 (Lars Duening) 3.3.426  (diff to 3.3.425: 3 KB: http)
(Back to the top.)
17-Mar-2003 (Lars Duening) 3.3.425  (diff to 3.3.424: 6 KB: http)
(Back to the top.)
17-Mar-2003 (Lars Duening) 3.3.424  (diff to 3.3.423: 9 KB: http)
(Back to the top.)
17-Mar-2003 (Lars Duening) 3.3.423  (diff to 3.3.416: 28 KB: http)  (diff to 3.3.422: 2 KB: http)
(Back to the top.)
15-Mar-2003 (Lars Duening) 3.3.422  (diff to 3.3.421: 2 KB: http)
(Back to the top.)
14-Mar-2003 (Lars Duening) 3.3.421  (diff to 3.3.420: 2 KB: http)
(Back to the top.)
13-Mar-2003 (Lars Duening) 3.3.420  (diff to 3.3.419: 7 KB: http)
(Back to the top.)
12-Mar-2003 (Lars Duening) 3.3.419  (diff to 3.3.418: 2 KB: http)
(Back to the top.)
11-Mar-2003 (Lars Duening) 3.3.418  (diff to 3.3.417: 7 KB: http)
(Back to the top.)
10-Mar-2003 (Lars Duening) 3.3.417  (diff to 3.3.416: 16 KB: http)
(Back to the top.)
09-Mar-2003 (Lars Duening) 3.3.416  (diff to 3.3.408: 35 KB: http)  (diff to 3.3.415: 5 KB: http)
(Back to the top.)
07-Mar-2003 (Lars Duening) 3.3.415  (diff to 3.3.414: 13 KB: http)
(Back to the top.)
06-Mar-2003 (Lars Duening) 3.3.414  (diff to 3.3.413: 7 KB: http)
(Back to the top.)
06-Mar-2003 (Lars Duening) 3.3.413  (diff to 3.3.412: 14 KB: http)
(Back to the top.)
05-Mar-2003 (Lars Duening) 3.3.412  (diff to 3.3.411: 4 KB: http)
(Back to the top.)
05-Mar-2003 (Lars Duening) 3.3.411  (diff to 3.3.410: 2 KB: http)
(Back to the top.)
03-Mar-2003 (Lars Duening) 3.3.410  (diff to 3.3.409: 5 KB: http)
(Back to the top.)
03-Mar-2003 (Lars Duening) 3.3.409  (diff to 3.3.408: 5 KB: http)
(Back to the top.)
02-Mar-2003 (Lars Duening) 3.3.408  (diff to 3.3.393: 42 KB: http)  (diff to 3.3.407: 3 KB: http)
(Back to the top.)
02-Mar-2003 (Lars Duening) 3.3.407  (diff to 3.3.406: 10 KB: http)
(Back to the top.)
02-Mar-2003 (Lars Duening) 3.3.406  (diff to 3.3.405: 2 KB: http)
(Back to the top.)
01-Mar-2003 (Lars Duening) 3.3.405  (diff to 3.3.404: 9 KB: http)
(Back to the top.)
27-Feb-2003 (Lars Duening) 3.3.404  (diff to 3.3.403: 2 KB: http)
(Back to the top.)
27-Feb-2003 (Lars Duening) 3.3.403  (diff to 3.3.402: 4 KB: http)
(Back to the top.)
24-Feb-2003 (Lars Duening) 3.3.402  (diff to 3.3.401: 3 KB: http)
(Back to the top.)
24-Feb-2003 (Lars Duening) 3.3.401  (diff to 3.3.400: 2 KB: http)
(Back to the top.)
23-Feb-2003 (Lars Duening) 3.3.400  (diff to 3.3.399: 2 KB: http)
(Back to the top.)
23-Feb-2003 (Lars Duening) 3.3.399  (diff to 3.3.398: 3 KB: http)
(Back to the top.)
21-Feb-2003 (Lars Duening) 3.3.398  (diff to 3.3.397: 2 KB: http)
(Back to the top.)
21-Feb-2003 (Lars Duening) 3.3.397  (diff to 3.3.396: 3 KB: http)
(Back to the top.)
20-Feb-2003 (Lars Duening) 3.3.396  (diff to 3.3.395: 5 KB: http)
(Back to the top.)
20-Feb-2003 (Lars Duening) 3.3.395  (diff to 3.3.394: 9 KB: http)
(Back to the top.)
18-Feb-2003 (Lars Duening) 3.3.394  (diff to 3.3.393: 10 KB: http)
(Back to the top.)
16-Feb-2003 (Lars Duening) 3.3.393  (diff to 3.3.385: 24 KB: http)  (diff to 3.3.392: 6 KB: http)
(Back to the top.)
16-Feb-2003 (Lars Duening) 3.3.392  (diff to 3.3.391: 2 KB: http)
(Back to the top.)
15-Feb-2003 (Lars Duening) 3.3.391  (diff to 3.3.390: 2 KB: http)
(Back to the top.)
12-Feb-2003 (Lars Duening) 3.3.390  (diff to 3.3.389: 3 KB: http)
(Back to the top.)
09-Feb-2003 (Lars Duening) 3.3.389  (diff to 3.3.388: 5 KB: http)
(Back to the top.)
07-Feb-2003 (Lars Duening) 3.3.388  (diff to 3.3.387: 3 KB: http)
(Back to the top.)
07-Feb-2003 (Lars Duening) 3.3.387  (diff to 3.3.386: 15 KB: http)
(Back to the top.)
04-Feb-2003 (Lars Duening) 3.3.386  (diff to 3.3.385: 2 KB: http)
(Back to the top.)
02-Feb-2003 (Lars Duening) 3.3.385  (diff to 3.3.379: 8 KB: http)  (diff to 3.3.384: 1 KB: http)
(Back to the top.)
30-Jan-2003 (Lars Duening) 3.3.384  (diff to 3.3.383: 2 KB: http)
(Back to the top.)
29-Jan-2003 (Lars Duening) 3.3.383  (diff to 3.3.382: 2 KB: http)
(Back to the top.)
29-Jan-2003 (Lars Duening) 3.3.382  (diff to 3.3.381: 1 KB: http)
(Back to the top.)
28-Jan-2003 (Lars Duening) 3.3.381  (diff to 3.3.380: 5 KB: http)
(Back to the top.)
27-Jan-2003 (Lars Duening) 3.3.380  (diff to 3.3.379: 2 KB: http)
(Back to the top.)
26-Jan-2003 (Lars Duening) 3.3.379  (diff to 3.3.362: 76 KB: http)  (diff to 3.3.378: 2 KB: http)
(Back to the top.)
26-Jan-2003 (Lars Duening) 3.3.378  (diff to 3.3.377: 27 KB: http)
(Back to the top.)
26-Jan-2003 (Lars Duening) 3.3.377  (diff to 3.3.376: 3 KB: http)
(Back to the top.)
26-Jan-2003 (Lars Duening) 3.3.376  (diff to 3.3.375: 2 KB: http)
(Back to the top.)
25-Jan-2003 (Lars Duening) 3.3.375  (diff to 3.3.374: 2 KB: http)
(Back to the top.)
25-Jan-2003 (Lars Duening) 3.3.374  (diff to 3.3.373: 9 KB: http)
(Back to the top.)
25-Jan-2003 (Lars Duening) 3.3.373  (diff to 3.3.372: 4 KB: http)
(Back to the top.)
24-Jan-2003 (Lars Duening) 3.3.372  (diff to 3.3.371: 2 KB: http)
(Back to the top.)
24-Jan-2003 (Lars Duening) 3.3.371  (diff to 3.3.370: 10 KB: http)
(Back to the top.)
23-Jan-2003 (Lars Duening) 3.3.370  (diff to 3.3.369: 6 KB: http)
(Back to the top.)
23-Jan-2003 (Lars Duening) 3.3.369  (diff to 3.3.368: 3 KB: http)
(Back to the top.)
23-Jan-2003 (Lars Duening) 3.3.368  (diff to 3.3.367: 2 KB: http)
(Back to the top.)
22-Jan-2003 (Lars Duening) 3.3.367  (diff to 3.3.366: 1 KB: http)
(Back to the top.)
22-Jan-2003 (Lars Duening) 3.3.366  (diff to 3.3.365: 3 KB: http)
(Back to the top.)
22-Jan-2003 (Lars Duening) 3.3.365  (diff to 3.3.364: 13 KB: http)
(Back to the top.)
19-Jan-2003 (Lars Duening) 3.3.364  (diff to 3.3.363: 2 KB: http)
(Back to the top.)
19-Jan-2003 (Lars Duening) 3.3.363  (diff to 3.3.362: 12 KB: http)
(Back to the top.)
19-Jan-2003 (Lars Duening) 3.3.362  (diff to 3.3.350: 38 KB: http)  (diff to 3.3.361: 2 KB: http)
(Back to the top.)
19-Jan-2003 (Lars Duening) 3.3.361  (diff to 3.3.360: 3 KB: http)
(Back to the top.)
18-Jan-2003 (Lars Duening) 3.3.360  (diff to 3.3.359: 6 KB: http)
(Back to the top.)
17-Jan-2003 (Lars Duening) 3.3.359  (diff to 3.3.358: 2 KB: http)
(Back to the top.)
17-Jan-2003 (Lars Duening) 3.3.358  (diff to 3.3.357: 7 KB: http)
(Back to the top.)
16-Jan-2003 (Lars Duening) 3.3.357  (diff to 3.3.356: 4 KB: http)
(Back to the top.)
11-Jan-2003 (Lars Duening) 3.3.356  (diff to 3.3.355: 3 KB: http)
(Back to the top.)
08-Jan-2003 (Lars Duening) 3.3.355  (diff to 3.3.354: 3 KB: http)
(Back to the top.)
07-Jan-2003 (Lars Duening) 3.3.354  (diff to 3.3.353: 7 KB: http)
(Back to the top.)
07-Jan-2003 (Lars Duening) 3.3.353  (diff to 3.3.352: 3 KB: http)
(Back to the top.)
06-Jan-2003 (Lars Duening) 3.3.352  (diff to 3.3.351: 4 KB: http)
(Back to the top.)
06-Jan-2003 (Lars Duening) 3.3.351  (diff to 3.3.350: 15 KB: http)
(Back to the top.)
05-Jan-2003 (Lars Duening) 3.3.350  (diff to 3.3.341: 193 KB: http)  (diff to 3.3.349: 4 KB: http)
(Back to the top.)
04-Jan-2003 (Lars Duening) 3.3.349  (diff to 3.3.348: 3 KB: http)
(Back to the top.)
04-Jan-2003 (Lars Duening) 3.3.348  (diff to 3.3.347: 3 KB: http)
(Back to the top.)
03-Jan-2003 (Lars Duening) 3.3.347  (diff to 3.3.346: 1 KB: http)
(Back to the top.)
03-Jan-2003 (Lars Duening) 3.3.346  (diff to 3.3.345: 2 KB: http)
(Back to the top.)
02-Jan-2003 (Lars Duening) 3.3.345  (diff to 3.3.344: 2 KB: http)
(Back to the top.)
02-Jan-2003 (Lars Duening) 3.3.344  (diff to 3.3.343: 92 KB: http)
(Back to the top.)
30-Dec-2002 (Lars Duening) 3.3.343  (diff to 3.3.342: 70 KB: http)
(Back to the top.)
28-Dec-2002 (Lars Duening) 3.3.342  (diff to 3.3.341: 33 KB: http)
(Back to the top.)
24-Dec-2002 (Lars Duening) 3.3.341  (diff to 3.3.323: 100 KB: http)  (diff to 3.3.340: 2 KB: http)
(Back to the top.)
24-Dec-2002 (Lars Duening) 3.3.340  (diff to 3.3.339: 2 KB: http)
(Back to the top.)
20-Dec-2002 (Lars Duening) 3.3.339  (diff to 3.3.337: 2 KB: http)
(Back to the top.)
20-Dec-2002 (Lars Duening) 3.3.337  (diff to 3.3.336: 3 KB: http)
(Back to the top.)
18-Dec-2002 (Lars Duening) 3.3.336  (diff to 3.3.335: 2 KB: http)
(Back to the top.)
18-Dec-2002 (Lars Duening) 3.3.335  (diff to 3.3.334: 1 KB: http)
(Back to the top.)
18-Dec-2002 (Lars Duening) 3.3.334  (diff to 3.3.333: 4 KB: http)
(Back to the top.)
16-Dec-2002 (Lars Duening) 3.3.333  (diff to 3.3.332: 1 KB: http)
(Back to the top.)
16-Dec-2002 (Lars Duening) 3.3.332  (diff to 3.3.331: 1 KB: http)
(Back to the top.)
16-Dec-2002 (Lars Duening) 3.3.331  (diff to 3.3.330: 2 KB: http)
(Back to the top.)
16-Dec-2002 (Lars Duening) 3.3.330  (diff to 3.3.329: 2 KB: http)
(Back to the top.)
15-Dec-2002 (Lars Duening) 3.3.329  (diff to 3.3.328: 2 KB: http)
(Back to the top.)
15-Dec-2002 (Lars Duening) 3.3.328  (diff to 3.3.327: 2 KB: http)
(Back to the top.)
15-Dec-2002 (Lars Duening) 3.3.327  (diff to 3.3.326: 34 KB: http)
(Back to the top.)
14-Dec-2002 (Lars Duening) 3.3.326  (diff to 3.3.325: 12 KB: http)
(Back to the top.)
12-Dec-2002 (Lars Duening) 3.3.325  (diff to 3.3.324: 2 KB: http)
(Back to the top.)
11-Dec-2002 (Lars Duening) 3.3.324  (diff to 3.3.323: 52 KB: http)
(Back to the top.)
10-Dec-2002 (Lars Duening) 3.3.323  (diff to 3.3.318: 44 KB: http)  (diff to 3.3.322: 15 KB: http)
(Back to the top.)
07-Dec-2002 (Lars Duening) 3.3.322  (diff to 3.3.321: 26 KB: http)
(Back to the top.)
04-Dec-2002 (Lars Duening) 3.3.321  (diff to 3.3.320: 11 KB: http)
(Back to the top.)
03-Dec-2002 (Lars Duening) 3.3.320  (diff to 3.3.319: 19 KB: http)
(Back to the top.)
03-Dec-2002 (Lars Duening) 3.3.319  (diff to 3.3.318: 2 KB: http)
(Back to the top.)
03-Dec-2002 (Lars Duening) 3.3.318  (diff to 3.3.305: 39 KB: http)  (diff to 3.3.317: 13 KB: http)
(Back to the top.)
30-Nov-2002 (Lars Duening) 3.3.317  (diff to 3.3.316: 5 KB: http)
(Back to the top.)
30-Nov-2002 (Lars Duening) 3.3.316  (diff to 3.3.315: 3 KB: http)
(Back to the top.)
30-Nov-2002 (Lars Duening) 3.3.315  (diff to 3.3.314: 3 KB: http)
(Back to the top.)
30-Nov-2002 (Lars Duening) 3.3.314  (diff to 3.3.313: 6 KB: http)
(Back to the top.)
27-Nov-2002 (Lars Duening) 3.3.313  (diff to 3.3.312: 3 KB: http)
(Back to the top.)
27-Nov-2002 (Lars Duening) 3.3.312  (diff to 3.3.311: 2 KB: http)
(Back to the top.)
27-Nov-2002 (Lars Duening) 3.3.311  (diff to 3.3.310: 2 KB: http)
(Back to the top.)
27-Nov-2002 (Lars Duening) 3.3.310  (diff to 3.3.309: 2 KB: http)
(Back to the top.)
27-Nov-2002 (Lars Duening) 3.3.309  (diff to 3.3.308: 5 KB: http)
26-Nov-2002 (Lars Duening)
21-Nov-2002 (Lars Duening)
(Back to the top.)
21-Nov-2002 (Lars Duening) 3.3.308  (diff to 3.3.307: 13 KB: http)
(Back to the top.)
20-Nov-2002 (Lars Duening) 3.3.307  (diff to 3.3.306: 7 KB: http)
(Back to the top.)
19-Nov-2002 (Lars Duening) 3.3.306  (diff to 3.3.305: 7 KB: http)
18-Nov-2002 (Lars Duening)
(Back to the top.)
17-Nov-2002 (Lars Duening) 3.3.305  (diff to 3.3.294: 128 KB: http)  (diff to 3.3.304: 101 KB: http)
(Back to the top.)
16-Nov-2002 (Lars Duening) 3.3.304  (diff to 3.3.303: 2 KB: http)
(Back to the top.)
16-Nov-2002 (Lars Duening) 3.3.303  (diff to 3.3.302: 14 KB: http)
(Back to the top.)
15-Nov-2002 (Lars Duening) 3.3.302  (diff to 3.3.301: 2 KB: http)
(Back to the top.)
15-Nov-2002 (Lars Duening) 3.3.301  (diff to 3.3.300: 2 KB: http)
(Back to the top.)
15-Nov-2002 (Lars Duening) 3.3.300  (diff to 3.3.299: 3 KB: http)
(Back to the top.)
14-Nov-2002 (Lars Duening) 3.3.299  (diff to 3.3.298: 2 KB: http)
(Back to the top.)
13-Nov-2002 (Lars Duening) 3.3.298  (diff to 3.3.297: 4 KB: http)
(Back to the top.)
13-Nov-2002 (Lars Duening) 3.3.297  (diff to 3.3.296: 8 KB: http)
(Back to the top.)
13-Nov-2002 (Lars Duening) 3.3.296  (diff to 3.3.295: 2 KB: http)
(Back to the top.)
13-Nov-2002 (Lars Duening) 3.3.295  (diff to 3.3.294: 9 KB: http)
(Back to the top.)
11-Nov-2002 (Lars Duening) 3.3.294  (diff to 3.3.293: 4 KB: http)  (diff to 3.3.284: 79 KB: http)
(Back to the top.)
07-Nov-2002 (Lars Duening) 3.3.293  (diff to 3.3.292: 3 KB: http)
(Back to the top.)
07-Nov-2002 (Lars Duening) 3.3.292  (diff to 3.3.291: 9 KB: http)
(Back to the top.)
04-Nov-2002 (Lars Duening) 3.3.291  (diff to 3.3.290: 3 KB: http)
03-Nov-2002 (Lars Duening)
(Back to the top.)
02-Nov-2002 (Lars Duening) 3.3.290  (diff to 3.3.289: 13 KB: http)
(Back to the top.)
31-Oct-2002 (Lars Duening) 3.3.289  (diff to 3.3.288: 4 KB: http)
(Back to the top.)
30-Oct-2002 (Lars Duening) 3.3.288  (diff to 3.3.287: 19 KB: http)
(Back to the top.)
29-Oct-2002 (Lars Duening) 3.3.287  (diff to 3.3.286: 33 KB: http)
(Back to the top.)
27-Oct-2002 (Lars Duening) 3.3.286  (diff to 3.3.285: 8 KB: http)
(Back to the top.)
16-Oct-2002 (Lars Duening) 3.3.285  (diff to 3.3.284: 7 KB: http)
15-Oct-2002 (Lars Duening)
14-Oct-2002 (Lars Duening)
(Back to the top.)
13-Oct-2002 (Lars Duening) 3.3.284  (diff to 3.3.276: 87 KB: http)  (diff to 3.3.283: 117 KB: http)
(Back to the top.)
10-Oct-2002 (Lars Duening) 3.3.283  (diff to 3.3.281: 9 KB: http)
(Back to the top.)
09-Oct-2002 (Lars Duening) 3.3.281  (diff to 3.3.280: 4 KB: http)
(Back to the top.)
09-Oct-2002 (Lars Duening) 3.3.280  (diff to 3.3.279: 5 KB: http)
08-Oct-2002 (Lars Duening)
(Back to the top.)
08-Oct-2002 (Lars Duening) 3.3.279  (diff to 3.3.278: 2 KB: http)
(Back to the top.)
08-Oct-2002 (Lars Duening) 3.3.278  (diff to 3.3.277: 6 KB: http)
(Back to the top.)
07-Oct-2002 (Lars Duening) 3.3.277  (diff to 3.3.276: 73 KB: http)
(Back to the top.)
07-Oct-2002 (Lars Duening) 3.3.276  (diff to 3.3.263: 122 KB: http)  (diff to 3.3.275: 9 KB: http)
(Back to the top.)
06-Oct-2002 (Lars Duening) 3.3.275  (diff to 3.3.274: 12 KB: http)
(Back to the top.)
06-Oct-2002 (Lars Duening) 3.3.274  (diff to 3.3.273: 4 KB: http)
(Back to the top.)
05-Oct-2002 (Lars Duening) 3.3.273  (diff to 3.3.272: 5 KB: http)
(Back to the top.)
05-Oct-2002 (Lars Duening) 3.3.272  (diff to 3.3.271: 2 KB: http)
(Back to the top.)
04-Oct-2002 (Lars Duening) 3.3.271  (diff to 3.3.270: 71 KB: http)
(Back to the top.)
03-Oct-2002 (Lars Duening) 3.3.270  (diff to 3.3.269: 18 KB: http)
(Back to the top.)
03-Oct-2002 (Lars Duening) 3.3.269  (diff to 3.3.268: 8 KB: http)
(Back to the top.)
01-Oct-2002 (Lars Duening) 3.3.268  (diff to 3.3.267: 3 KB: http)
(Back to the top.)
30-Sep-2002 (Lars Duening) 3.3.267  (diff to 3.3.266: 8 KB: http)
(Back to the top.)
27-Sep-2002 (Lars Duening) 3.3.266  (diff to 3.3.265: 26 KB: http)
26-Sep-2002 (Lars Duening)
25-Sep-2002 (Lars Duening)
(Back to the top.)
25-Sep-2002 (Lars Duening) 3.3.265  (diff to 3.3.264: 4 KB: http)
(Back to the top.)
25-Sep-2002 (Lars Duening) 3.3.264  (diff to 3.3.263: 4 KB: http)
(Back to the top.)
24-Sep-2002 (Lars Duening) 3.3.263  (diff to 3.3.248: 174 KB: http)  (diff to 3.3.262: 13 KB: http)
Patches from Guandalug: (Back to the top.)
20-Sep-2002 (Lars Duening) 3.3.262  (diff to 3.3.261: 14 KB: http)
(Back to the top.)
18-Sep-2002 (Lars Duening) 3.3.261  (diff to 3.3.260: 7 KB: http)
(Back to the top.)
18-Sep-2002 (Lars Duening) 3.3.260  (diff to 3.3.258: 80 KB: http)
18-Sep-2002 (Lars Duening) 3.3.259
(Back to the top.)
17-Sep-2002 (Lars Duening) 3.3.258  (diff to 3.3.257: 5 KB: http)
(Back to the top.)
16-Sep-2002 (Lars Duening) 3.3.257  (diff to 3.3.256: 8 KB: http)
(Back to the top.)
15-Sep-2002 (Lars Duening) 3.3.256  (diff to 3.3.255: 17 KB: http)
(Back to the top.)
15-Sep-2002 (Lars Duening) 3.3.255  (diff to 3.3.254: 10 KB: http)
(Back to the top.)
15-Sep-2002 (Lars Duening) 3.3.254  (diff to 3.3.253: 11 KB: http)
(Back to the top.)
13-Sep-2002 (Lars Duening) 3.3.253  (diff to 3.3.252: 22 KB: http)
(Back to the top.)
12-Sep-2002 (Lars Duening) 3.3.252  (diff to 3.3.251: 9 KB: http)
11-Sep-2002 (Lars Duening)
(Back to the top.)
11-Sep-2002 (Lars Duening) 3.3.251  (diff to 3.3.250: 10 KB: http)
(Back to the top.)
10-Sep-2002 (Lars Duening) 3.3.250  (diff to 3.3.249: 8 KB: http)
(Back to the top.)
09-Sep-2002 (Lars Duening) 3.3.249  (diff to 3.3.248: 18 KB: http)
(Back to the top.)
09-Sep-2002 (Lars Duening) 3.3.248  (diff to 3.3.239: 50 KB: http)  (diff to 3.3.247: 3 KB: http)
(Back to the top.)
06-Sep-2002 (Lars Duening) 3.3.247  (diff to 3.3.246: 2 KB: http)
(Back to the top.)
06-Sep-2002 (Lars Duening) 3.3.246  (diff to 3.3.245: 20 KB: http)
(Back to the top.)
05-Sep-2002 (Lars Duening) 3.3.245  (diff to 3.3.244: 9 KB: http)
(Back to the top.)
04-Sep-2002 (Lars Duening) 3.3.244  (diff to 3.3.243: 13 KB: http)
(Back to the top.)
04-Sep-2002 (Lars Duening) 3.3.243  (diff to 3.3.242: 17 KB: http)
(Back to the top.)
04-Sep-2002 (Lars Duening) 3.3.242  (diff to 3.3.241: 6 KB: http)
03-Sep-2002 (Lars Duening)
(Back to the top.)
02-Sep-2002 (Lars Duening) 3.3.241  (diff to 3.3.240: 2 KB: http)
(Back to the top.)
02-Sep-2002 (Lars Duening) 3.3.240  (diff to 3.3.239: 2 KB: http)
(Back to the top.)
01-Sep-2002 (Lars Duening) 3.3.239  (diff to 3.3.231: 93 KB: http)  (diff to 3.3.238: 3 KB: http)
(Back to the top.)
30-Aug-2002 (Lars Duening) 3.3.238  (diff to 3.3.237: 3 KB: http)
(Back to the top.)
29-Aug-2002 (Lars Duening) 3.3.237  (diff to 3.3.236: 20 KB: http)
(Back to the top.)
28-Aug-2002 (Lars Duening) 3.3.236  (diff to 3.3.235: 2 KB: http)
(Back to the top.)
28-Aug-2002 (Lars Duening) 3.3.235  (diff to 3.3.234: 68 KB: http)
(Back to the top.)
27-Aug-2002 (Lars Duening) 3.3.234  (diff to 3.3.233: 4 KB: http)
26-Aug-2002 (Lars Duening)
25-Aug-2002 (Lars Duening)
(Back to the top.)
24-Aug-2002 (Lars Duening) 3.3.233  (diff to 3.3.232: 3 KB: http)
(Back to the top.)
23-Aug-2002 (Lars Duening) 3.3.232  (diff to 3.3.231: 2 KB: http)
(Back to the top.)
21-Aug-2002 (Lars Duening) 3.3.231  (diff to 3.3.221: 42 KB: http)  (diff to 3.3.230: 12 KB: http)
(Back to the top.)
20-Aug-2002 (Lars Duening) 3.3.230  (diff to 3.3.229: 18 KB: http)
(Back to the top.)
19-Aug-2002 (Lars Duening) 3.3.229  (diff to 3.3.228: 7 KB: http)
(Back to the top.)
18-Aug-2002 (Lars Duening) 3.3.228  (diff to 3.3.227: 3 KB: http)
(Back to the top.)
18-Aug-2002 (Lars Duening) 3.3.227  (diff to 3.3.226: 3 KB: http)
(Back to the top.)
17-Aug-2002 (Lars Duening) 3.3.226  (diff to 3.3.225: 2 KB: http)
(Back to the top.)
16-Aug-2002 (Lars Duening) 3.3.225  (diff to 3.3.224: 3 KB: http)
(Back to the top.)
15-Aug-2002 (Lars Duening) 3.3.224  (diff to 3.3.223: 8 KB: http)
(Back to the top.)
14-Aug-2002 (Lars Duening) 3.3.223  (diff to 3.3.222: 3 KB: http)
(Back to the top.)
14-Aug-2002 (Lars Duening) 3.3.222  (diff to 3.3.221: 5 KB: http)
(Back to the top.)
14-Aug-2002 (Lars Duening) 3.3.221  (diff to 3.3.220: 15 KB: http)  (diff to 3.3.208: 171 KB: http)
(Back to the top.)
13-Aug-2002 (Lars Duening) 3.3.220  (diff to 3.3.219: 3 KB: http)
(Back to the top.)
13-Aug-2002 (Lars Duening) 3.3.219  (diff to 3.3.218: 18 KB: http)
This completes the addition of PCRE to LDMud (f-010406-0). (Back to the top.)
12-Aug-2002 (Lars Duening) 3.3.218  (diff to 3.3.217: 47 KB: http)
11-Aug-2002 (Lars Duening)
(Back to the top.)
10-Aug-2002 (Lars Duening) 3.3.217  (diff to 3.3.216: 35 KB: http)
08-Aug-2002 (Lars Duening)
(Back to the top.)
05-Aug-2002 (Lars Duening) 3.3.216  (diff to 3.3.215: 2 KB: http)
(Back to the top.)
05-Aug-2002 (Lars Duening) 3.3.215  (diff to 3.3.214: 7 KB: http)
(Back to the top.)
16-Jul-2002 (Lars Duening) 3.3.214  (diff to 3.3.213: 6 KB: http)
(Back to the top.)
15-Jul-2002 (Lars Duening) 3.3.213  (diff to 3.3.212: 9 KB: http)
(Back to the top.)
14-Jul-2002 (Lars Duening) 3.3.212  (diff to 3.3.211: 14 KB: http)
(Back to the top.)
06-Jun-2002 (Lars Duening) 3.3.211  (diff to 3.3.210: 2 KB: http)
(Back to the top.)
05-Jun-2002 (Lars Duening) 3.3.210  (diff to 3.3.209: 13 KB: http)
17-May-2002 (Lars Duening)
(Back to the top.)
13-May-2002 (Lars Duening) 3.3.209  (diff to 3.3.208: 24 KB: http)
(Back to the top.)
07-May-2002 (Lars Duening) 3.3.208  (diff to 3.3.198: 126 KB: http)  (diff to 3.3.207: 4 KB: http)
(Back to the top.)
07-May-2002 (Lars Duening) 3.3.207  (diff to 3.3.206: 3 KB: http)
(Back to the top.)
03-May-2002 (Lars Duening) 3.3.206  (diff to 3.3.205: 54 KB: http)
01-May-2002 (Lars Duening)
(Back to the top.)
26-Apr-2002 (Lars Duening) 3.3.205  (diff to 3.3.204: 6 KB: http)
(Back to the top.)
25-Apr-2002 (Lars Duening) 3.3.204  (diff to 3.3.203: 24 KB: http)
(Back to the top.)
21-Apr-2002 (Lars Duening) 3.3.203  (diff to 3.3.202: 7 KB: http)
(Back to the top.)
20-Apr-2002 (Lars Duening) 3.3.202  (diff to 3.3.201: 9 KB: http)
19-Apr-2002 (Lars Duening)
(Back to the top.)
18-Apr-2002 (Lars Duening) 3.3.201  (diff to 3.3.200: 5 KB: http)
(Back to the top.)
09-Apr-2002 (Lars Duening) 3.3.200  (diff to 3.3.199: 31 KB: http)
(Back to the top.)
08-Apr-2002 (Lars Duening) 3.3.199  (diff to 3.3.198: 4 KB: http)
(Back to the top.)
05-Apr-2002 (Lars Duening) 3.3.198  (diff to 3.3.194: 44 KB: http)
(Back to the top.)
04-Apr-2002 (Lars Duening) 3.3.197  (diff to 3.3.196: 9 KB: http)
(Back to the top.)
03-Apr-2002 (Lars Duening) 3.3.196  (diff to 3.3.195: 10 KB: http)
(Back to the top.)
02-Apr-2002 (Lars Duening) 3.3.195  (diff to 3.3.194: 7 KB: http)
(Back to the top.)
31-Mar-2002 (Lars Duening) 3.3.194  (diff to 3.3.186: 149 KB: http)  (diff to 3.3.193: 8 KB: http)
(Back to the top.)
31-Mar-2002 (Lars Duening) 3.3.193  (diff to 3.3.192: 12 KB: http)
(Back to the top.)
30-Mar-2002 (Lars Duening) 3.3.192  (diff to 3.3.191: 102 KB: http)
(Back to the top.)
28-Mar-2002 (Lars Duening) 3.3.191  (diff to 3.3.190: 3 KB: http)
(Back to the top.)
28-Mar-2002 (Lars Duening) 3.3.190  (diff to 3.3.189: 9 KB: http)
(Back to the top.)
27-Mar-2002 (Lars Duening) 3.3.189  (diff to 3.3.188: 17 KB: http)
(Back to the top.)
27-Mar-2002 (Lars Duening) 3.3.188  (diff to 3.3.187: 19 KB: http)  (diff to 3.3.197: 30 KB: http)
(Back to the top.)
26-Mar-2002 (Lars Duening) 3.3.187  (diff to 3.3.186: 7 KB: http)
25-Mar-2002 (Lars Duening)
(Back to the top.)
21-Mar-2002 (Lars Duening) 3.3.186  (diff to 3.3.176: 45 KB: http)  (diff to 3.3.185: 6 KB: http)
(Back to the top.)
19-Mar-2002 (Lars Duening) 3.3.185  (diff to 3.3.184: 2 KB: http)
(Back to the top.)
16-Mar-2002 (Lars Duening) 3.3.184  (diff to 3.3.183: 13 KB: http)
12-Mar-2002 (Lars Duening)
(Back to the top.)
11-Mar-2002 (Lars Duening) 3.3.183  (diff to 3.3.182: 3 KB: http)
(Back to the top.)
10-Mar-2002 (Lars Duening) 3.3.182  (diff to 3.3.181: 4 KB: http)
(Back to the top.)
09-Mar-2002 (Lars Duening) 3.3.181  (diff to 3.3.180: 8 KB: http)
(Back to the top.)
07-Mar-2002 (Lars Duening) 3.3.180  (diff to 3.3.179: 14 KB: http)
(Back to the top.)
06-Mar-2002 (Lars Duening) 3.3.179  (diff to 3.3.178: 9 KB: http)
(Back to the top.)
05-Mar-2002 (Lars Duening) 3.3.178  (diff to 3.3.177: 7 KB: http)
(Back to the top.)
04-Mar-2002 (Lars Duening) 3.3.177  (diff to 3.3.176: 6 KB: http)
(Back to the top.)
03-Mar-2002 (Lars Duening) 3.3.176  (diff to 3.3.170: 80 KB: http)  (diff to 3.3.175: 14 KB: http)
(Back to the top.)
01-Mar-2002 (Lars Duening) 3.3.175  (diff to 3.3.174: 12 KB: http)
(Back to the top.)
28-Feb-2002 (Lars Duening) 3.3.174  (diff to 3.3.173: 48 KB: http)
27-Feb-2002 (Lars Duening)
(Back to the top.)
26-Feb-2002 (Lars Duening) 3.3.173  (diff to 3.3.172: 4 KB: http)
(Back to the top.)
22-Feb-2002 (Lars Duening) 3.3.172  (diff to 3.3.171: 13 KB: http)
21-Feb-2002 (Lars Duening)
(Back to the top.)
20-Feb-2002 (Lars Duening) 3.3.171  (diff to 3.3.170: 3 KB: http)
(Back to the top.)
18-Feb-2002 (Lars Duening) 3.3.170  (diff to 3.3.166: 12 KB: http)  (diff to 3.3.169: 2 KB: http)
(Back to the top.)
17-Feb-2002 (Lars Duening) 3.3.169  (diff to 3.3.168: 8 KB: http)
15-Feb-2002 (Lars Duening)
(Back to the top.)
13-Feb-2002 (Lars Duening) 3.3.168  (diff to 3.3.167: 4 KB: http)
(Back to the top.)
11-Feb-2002 (Lars Duening) 3.3.167  (diff to 3.3.166: 5 KB: http)
(Back to the top.)
10-Feb-2002 (Lars Duening) 3.3.166  (diff to 3.3.156: 353 KB: http)  (diff to 3.3.165: 227 KB: http)
(Back to the top.)
07-Feb-2002 (Lars Duening) 3.3.165  (diff to 3.3.164: 6 KB: http)
(Back to the top.)
07-Feb-2002 (Lars Duening) 3.3.164  (diff to 3.3.163: 201 KB: http)
(Back to the top.)
06-Feb-2002 (Lars Duening) 3.3.163  (diff to 3.3.162: 8 KB: http)
(Back to the top.)
06-Feb-2002 (Lars Duening) 3.3.162  (diff to 3.3.161: 97 KB: http)
(Back to the top.)
05-Feb-2002 (Lars Duening) 3.3.161  (diff to 3.3.160: 2 KB: http)
(Back to the top.)
03-Feb-2002 (Lars Duening) 3.3.160  (diff to 3.3.159: 9 KB: http)
01-Feb-2002 (Lars Duening)
(Back to the top.)
31-Jan-2002 (Lars Duening) 3.3.159  (diff to 3.3.158: 3 KB: http)
(Back to the top.)
30-Jan-2002 (Lars Duening) 3.3.158  (diff to 3.3.157: 4 KB: http)
(Back to the top.)
26-Jan-2002 (Lars Duening) 3.3.157  (diff to 3.3.156: 5 KB: http)
(Back to the top.)
25-Jan-2002 (Lars Duening) 3.3.156  (diff to 3.3.144: 71 KB: http)  (diff to 3.3.155: 8 KB: http)
24-Jan-2002 (Lars Duening)
(Back to the top.)
23-Jan-2002 (Lars Duening) 3.3.155  (diff to 3.3.154: 9 KB: http)
(Back to the top.)
17-Jan-2002 (Lars Duening) 3.3.154  (diff to 3.3.153: 13 KB: http)
16-Jan-2002 (Lars Duening)
15-Jan-2002 (Lars Duening)
14-Jan-2002 (Lars Duening)
(Back to the top.)
12-Jan-2002 (Lars Duening) 3.3.153  (diff to 3.3.152: 7 KB: http)
(Back to the top.)
10-Jan-2002 (Lars Duening) 3.3.152  (diff to 3.3.151: 6 KB: http)
(Back to the top.)
08-Jan-2002 (Lars Duening) 3.3.151  (diff to 3.3.150: 5 KB: http)
(Back to the top.)
03-Jan-2002 (Lars Duening) 3.3.150  (diff to 3.3.149: 20 KB: http)
(Back to the top.)
02-Jan-2002 (Lars Duening) 3.3.149  (diff to 3.3.148: 5 KB: http)
(Back to the top.)
02-Jan-2002 (Lars Duening) 3.3.148  (diff to 3.3.147: 14 KB: http)
(Back to the top.)
31-Dec-2001 (Lars Duening) 3.3.147  (diff to 3.3.146: 4 KB: http)
(Back to the top.)
30-Dec-2001 (Lars Duening) 3.3.146  (diff to 3.3.145: 6 KB: http)
29-Dec-2001 (Lars Duening)
(Back to the top.)
28-Dec-2001 (Lars Duening) 3.3.145  (diff to 3.3.144: 7 KB: http)
(Back to the top.)
21-Dec-2001 (Lars Duening) 3.3.144  (diff to 3.3.131: 66 KB: http)  (diff to 3.3.143: 4 KB: http)
(Back to the top.)
20-Dec-2001 (Lars Duening) 3.3.143  (diff to 3.3.142: 30 KB: http)
(Back to the top.)
19-Dec-2001 (Lars Duening) 3.3.142  (diff to 3.3.141: 3 KB: http)
(Back to the top.)
14-Dec-2001 (Lars Duening) 3.3.141  (diff to 3.3.140: 17 KB: http)
(Back to the top.)
12-Dec-2001 (Lars Duening) 3.3.140  (diff to 3.3.139: 5 KB: http)
11-Dec-2001 (Lars Duening)
(Back to the top.)
11-Dec-2001 (Lars Duening) 3.3.139  (diff to 3.3.138: 3 KB: http)
(Back to the top.)
11-Dec-2001 (Lars Duening) 3.3.138  (diff to 3.3.137: 3 KB: http)
(Back to the top.)
10-Dec-2001 (Lars Duening) 3.3.137  (diff to 3.3.136: 5 KB: http)
(Back to the top.)
05-Dec-2001 (Lars Duening) 3.3.136  (diff to 3.3.135: 6 KB: http)
(Back to the top.)
04-Dec-2001 (Lars Duening) 3.3.135  (diff to 3.3.134: 4 KB: http)
(Back to the top.)
29-Nov-2001 (Lars Duening) 3.3.134  (diff to 3.3.133: 2 KB: http)
(Back to the top.)
28-Nov-2001 (Lars Duening) 3.3.133  (diff to 3.3.132: 5 KB: http)
(Back to the top.)
27-Nov-2001 (Lars Duening) 3.3.132  (diff to 3.3.131: 3 KB: http)
(Back to the top.)
25-Nov-2001 (Lars Duening) 3.3.131  (diff to 3.3.126: 28 KB: http)  (diff to 3.3.130: 7 KB: http)
(Back to the top.)
24-Nov-2001 (Lars Duening) 3.3.130  (diff to 3.3.129: 8 KB: http)
23-Nov-2001 (Lars Duening)
21-Nov-2001 (Lars Duening)
(Back to the top.)
20-Nov-2001 (Lars Duening) 3.3.129  (diff to 3.3.128: 3 KB: http)
(Back to the top.)
20-Nov-2001 (Lars Duening) 3.3.128  (diff to 3.3.127: 15 KB: http)
(Back to the top.)
19-Nov-2001 (Lars Duening) 3.3.127  (diff to 3.3.126: 7 KB: http)
(Back to the top.)
18-Nov-2001 (Lars Duening) 3.3.126  (diff to 3.3.119: 41 KB: http)  (diff to 3.3.125: 10 KB: http)
(Back to the top.)
17-Nov-2001 (Lars Duening) 3.3.125  (diff to 3.3.124: 21 KB: http)
(Back to the top.)
16-Nov-2001 (Lars Duening) 3.3.124  (diff to 3.3.123: 6 KB: http)
(Back to the top.)
15-Nov-2001 (Lars Duening) 3.3.123  (diff to 3.3.122: 4 KB: http)
(Back to the top.)
14-Nov-2001 (Lars Duening) 3.3.122  (diff to 3.3.121: 6 KB: http)
(Back to the top.)
13-Nov-2001 (Lars Duening) 3.3.121  (diff to 3.3.120: 7 KB: http)
(Back to the top.)
12-Nov-2001 (Lars Duening) 3.3.120  (diff to 3.3.119: 4 KB: http)
(Back to the top.)
24-Oct-2001 (Lars Duening) 3.3.119  (diff to 3.3.114: 28 KB: http)  (diff to 3.3.118: 14 KB: http)
23-Oct-2001 (Lars Duening)
22-Oct-2001 (Lars Duening)
(Back to the top.)
21-Oct-2001 (Lars Duening) 3.3.118  (diff to 3.3.117: 3 KB: http)
(Back to the top.)
18-Oct-2001 (Lars Duening) 3.3.117  (diff to 3.3.116: 10 KB: http)
(Back to the top.)
17-Oct-2001 (Lars Duening) 3.3.116  (diff to 3.3.115: 6 KB: http)
(Back to the top.)
15-Oct-2001 (Lars Duening) 3.3.115  (diff to 3.3.114: 4 KB: http)
(Back to the top.)
14-Oct-2001 (Lars Duening) 3.3.114  (diff to 3.3.113: 10 KB: http)  (diff to 3.3.104: 58 KB: http)
(Back to the top.)
12-Oct-2001 (Lars Duening) 3.3.113  (diff to 3.3.112: 28 KB: http)
(Back to the top.)
11-Oct-2001 (Lars Duening) 3.3.112  (diff to 3.3.111: 12 KB: http)
(Back to the top.)
10-Oct-2001 (Lars Duening) 3.3.111  (diff to 3.3.110: 6 KB: http)
(Back to the top.)
09-Oct-2001 (Lars Duening) 3.3.110  (diff to 3.3.109: 9 KB: http)
(Back to the top.)
08-Oct-2001 (Lars Duening) 3.3.109  (diff to 3.3.108: 4 KB: http)
(Back to the top.)
06-Oct-2001 (Lars Duening) 3.3.108  (diff to 3.3.107: 5 KB: http)
05-Oct-2001 (Lars Duening)
(Back to the top.)
04-Oct-2001 (Lars Duening) 3.3.107  (diff to 3.3.106: 8 KB: http)
(Back to the top.)
03-Oct-2001 (Lars Duening) 3.3.106  (diff to 3.3.105: 3 KB: http)
(Back to the top.)
01-Oct-2001 (Lars Duening) 3.3.105  (diff to 3.3.104: 2 KB: http)
(Back to the top.)
30-Sep-2001 (Lars Duening) 3.3.104  (diff to 3.3.98: 24 KB: http)  (diff to 3.3.103: 4 KB: http)
(Back to the top.)
28-Sep-2001 (Lars Duening) 3.3.103  (diff to 3.3.102: 11 KB: http)
(Back to the top.)
27-Sep-2001 (Lars Duening) 3.3.102  (diff to 3.3.101: 3 KB: http)
(Back to the top.)
26-Sep-2001 (Lars Duening) 3.3.101  (diff to 3.3.100: 7 KB: http)
(Back to the top.)
08-Sep-2001 (Lars Duening) 3.3.100  (diff to 3.3.99: 9 KB: http)
(Back to the top.)
05-Sep-2001 (Lars Duening) 3.3.99  (diff to 3.3.98: 3 KB: http)
(Back to the top.)
03-Sep-2001 (Lars Duening) 3.3.98  (diff to 3.3.91: 20 KB: http)  (diff to 3.3.97: 3 KB: http)
(Back to the top.)
01-Sep-2001 (Lars Duening) 3.3.97  (diff to 3.3.96: 8 KB: http)
(Back to the top.)
29-Aug-2001 (Lars Duening) 3.3.96  (diff to 3.3.95: 7KB: http)
(Back to the top.)
28-Aug-2001 (Lars Duening) 3.3.95  (diff to 3.3.94: 5KB: http)
28-Aug-2001 (Lars Duening) (3.3.94)
(Back to the top.)
28-Aug-2001 (Lars Duening) 3.3.93  (diff to 3.3.92: 2KB: http)
(Back to the top.)
27-Aug-2001 (Lars Duening) 3.3.92  (diff to 3.3.91: 8KB: http)
(Back to the top.)
26-Aug-2001 (Lars Duening) 3.3.91  (diff to 3.3.90: 20KB: http)  (diff to 3.3.87: 26KB: http)
25-Aug-2001 (Lars Duening)
(Back to the top.)
23-Aug-2001 (Lars Duening) 3.3.90  (diff to 3.3.89: 3KB: http)
(Back to the top.)
22-Aug-2001 (Lars Duening) 3.3.89  (diff to 3.3.88: 3KB: http)
(Back to the top.)
21-Aug-2001 (Lars Duening) 3.3.88  (diff to 3.3.87: 6KB: http)
(Back to the top.)
19-Aug-2001 (Lars Duening) 3.3.87  (diff to 3.3.83: 29KB: http)  (diff to 3.3.86: 6KB: http)
(Back to the top.)
15-Aug-2001 (Lars Duening) 3.3.86  (diff to 3.3.85: 3KB: http)
(Back to the top.)
14-Aug-2001 (Lars Duening) 3.3.85  (diff to 3.3.84: 22KB: http)
13-Aug-2001 (Lars Duening)
12-Aug-2001 (Lars Duening)
(Back to the top.)
07-Aug-2001 (Lars Duening) 3.3.84  (diff to 3.3.83: 5KB: http)
06-Aug-2001 (Lars Duening)
(Back to the top.)
05-Aug-2001 (Lars Duening) 3.3.83  (diff to 3.3.82: 14KB: http)  (diff to 3.3.76: 49KB: http)
(Back to the top.)
01-Aug-2001 (Lars Duening) 3.3.82  (diff to 3.3.81: 5KB: http)
(Back to the top.)
31-Jul-2001 (Lars Duening) 3.3.81  (diff to 3.3.80: 3KB: http)
(Back to the top.)
26-Jul-2001 (Lars Duening) 3.3.80  (diff to 3.3.79: 4KB: http)
(Back to the top.)
25-Jul-2001 (Lars Duening) 3.3.79  (diff to 3.3.78: 9KB: http)
(Back to the top.)
17-Jul-2001 (Lars Duening) 3.3.78  (diff to 3.3.77: 9KB: http)
(Back to the top.)
16-Jul-2001 (Lars Duening) 3.3.77  (diff to 3.3.76: 21KB: http)
(Back to the top.)
15-Jul-2001 (Lars Duening) 3.3.76  (diff to 3.3.75: 6KB: http)  (diff to 3.3.70: 61KB: http)
(Back to the top.)
15-Jul-2001 (Lars Duening) 3.3.75  (diff to 3.3.74: 27KB: http)
(Back to the top.)
13-Jul-2001 (Lars Duening) 3.3.74  (diff to 3.3.73: 22KB: http)
(Back to the top.)
05-Jul-2001 (Lars Duening) 3.3.73  (diff to 3.3.72: 13KB: http)
(Back to the top.)
03-Jul-2001 (Lars Duening) 3.3.72  (diff to 3.3.71: 2KB: http)
(Back to the top.)
01-Jul-2001 (Lars Duening) 3.3.71  (diff to 3.3.70: 11KB: http)
(Back to the top.)
30-Jun-2001 (Lars Duening) 3.3.70  (diff to 3.3.69: 21KB: http)  (diff to 3.3.59: 70KB: http)
(Back to the top.)
30-Jun-2001 (Lars Duening) 3.3.69  (diff to 3.3.68: 13KB: http)
(Back to the top.)
29-Jun-2001 (Lars Duening) 3.3.68  (diff to 3.3.67: 7KB: http)
(Back to the top.)
29-Jun-2001 (Lars Duening) 3.3.67  (diff to 3.3.66: 7KB: http)
(Back to the top.)
29-Jun-2001 (Lars Duening) 3.3.66  (diff to 3.3.65: 6KB: http)
(Back to the top.)
27-Jun-2001 (Lars Duening) 3.3.65  (diff to 3.3.64: 22KB: http)
22-Jun-2001 (Lars Duening)
21-Jun-2001 (Lars Duening)
(Back to the top.)
17-Jun-2001 (Lars Duening) 3.3.64  (diff to 3.3.63: 7KB: http)
(Back to the top.)
13-Jun-2001 (Lars Duening) 3.3.63  (diff to 3.3.62: 7KB: http)
(Back to the top.)
11-Jun-2001 (Lars Duening) 3.3.62  (diff to 3.3.61: 4KB: http)
(Back to the top.)
09-Jun-2001 (Lars Duening) 3.3.61  (diff to 3.3.60: 20KB: http)
07-Jun-2001 (Lars Duening)
(Back to the top.)
04-Jun-2001 (Lars Duening) 3.3.60  (diff to 3.3.59: 3KB: http)
(Back to the top.)
03-Jun-2001 (Lars Duening) 3.3.59  (diff to 3.3.58: 16KB: http)  (diff to 3.3.53: 36KB: http)
02-June-2001 (Lars Duening)
25-May-2001 (Lars Duening)
(Back to the top.)
24-May-2001 (Lars Duening) 3.3.58  (diff to 3.3.57: 11KB: http)
22-May-2001 (Lars Duening)
(Back to the top.)
16-May-2001 (Lars Duening) 3.3.57  (diff to 3.3.56: 8KB: http)
(Back to the top.)
15-May-2001 (Lars Duening) 3.3.56  (diff to 3.3.55: 3KB: http)
(Back to the top.)
13-May-2001 (Lars Duening) 3.3.55  (diff to 3.3.54: 3KB: http)
(Back to the top.)
09-May-2001 (Lars Duening) 3.3.54  (diff to 3.3.53: 7KB: http)
08-May-2001 (Lars Duening)
06-May-2001 (Lars Duening)
(Back to the top.)
29-Apr-2001 (Lars Duening) 3.3.53  (diff to 3.3.52: 4KB: http)  (diff to 3.3.39: 249KB: http)
(Back to the top.)
28-Apr-2001 (Lars Duening) 3.3.52  (diff to 3.3.51: 133KB: http)
(Back to the top.)
27-Apr-2001 (Lars Duening) 3.3.51  (diff to 3.3.50: 16KB: http)
(Back to the top.)
25-Apr-2001 (Lars Duening) 3.3.49 and .50  (diff to 3.3.48: 39KB: http)
(Back to the top.)
24-Apr-2001 (Lars Duening) 3.3.48  (diff to 3.3.47: 70KB: http)
(Back to the top.)
22-Apr-2001 (Lars Duening) 3.3.47  (diff to 3.3.46: 36KB: http)
(Back to the top.)
20-Apr-2001 (Lars Duening) 3.3.46  (diff to 3.3.45: 33KB: http)
(Back to the top.)
19-Apr-2001 (Lars Duening) 3.3.45  (diff to 3.3.44: 16KB: http)
(Back to the top.)
18-Apr-2001 (Lars Duening) 3.3.44  (diff to 3.3.43: 5KB: http)
(Back to the top.)
17-Apr-2001 (Lars Duening) 3.3.43  (diff to 3.3.42: 5KB: http)
(Back to the top.)
16-Apr-2001 (Lars Duening) 3.3.42  (diff to 3.3.41: 3KB: http)
(Back to the top.)
13-Apr-2001 (Lars Duening) 3.3.41  (diff to 3.3.40: 12KB: http)
12-Apr-2001 (Lars Duening)
(Back to the top.)
11-Apr-2001 (Lars Duening) 3.3.40  (diff to 3.3.39: 12KB: http)
10-Apr-2001 (Lars Duening)
(Back to the top.)
08-Apr-2001 (Lars Duening) 3.3.39  (diff to 3.3.32: 207KB: http)  (diff to 3.3.38: 3KB: http)
(Back to the top.)
06-Apr-2001 (Lars Duening) 3.3.38  (diff to 3.3.37: 14KB: http)
(Back to the top.)
05-Apr-2001 (Lars Duening) 3.3.37  (diff to 3.3.36: 13KB: http)
(Back to the top.)
04-Apr-2001 (Lars Duening) 3.3.36  (diff to 3.3.35: 10KB: http)
(Back to the top.)
03-Apr-2001 (Lars Duening) 3.3.35  (diff to 3.3.34: 158KB: http)
(Back to the top.)
02-Apr-2001 (Lars Duening) 3.3.34  (diff to 3.3.33: 14KB: http)
30-Mar-2001 (Lars Duening)
27-Mar-2001 (Lars Duening)
22-Mar-2001 (Lars Duening)
(Back to the top.)
21-Mar-2001 (Lars Duening) 3.3.33  (diff to 3.3.32: 10KB: http)
20-Mar-2001 (Lars Duening) 3.3.32  (diff to 3.3.24: 153KB: http)  (diff to 3.3.31: 23KB: http)
19-Mar-2001 (Lars Duening)
(Back to the top.)
18-Mar-2001 (Lars Duening) 3.3.31  (diff to 3.3.30: 7KB: http)
(Back to the top.)
15-Mar-2001 (Lars Duening) 3.3.30  (diff to 3.3.29: 7KB: http)
(Back to the top.)
14-Mar-2001 (Lars Duening) 3.3.29  (diff to 3.3.28: 8KB: http)
(Back to the top.)
13-Mar-2001 (Lars Duening) 3.3.28  (diff to 3.3.27: 13KB: http)
(Back to the top.)
09-Mar-2001 (Lars Duening) 3.3.27  (diff to 3.3.26: 16KB: http)
The driver is now able to run lp-245, and boot into Evermore-native. (Back to the top.)
07-Mar-2001 (Lars Duening) 3.3.26  (diff to 3.3.25: 5KB: http)
(Back to the top.)
06-Mar-2001 (Lars Duening) 3.3.25  (diff to 3.3.24: 109KB: http)
Included changes up to 3.2.9-dev.263: (Back to the top.)
11-Feb-2001 (Lars Duening) 3.3.24  (diff to 3.3.4: 380KB: http)
Included changes up to 3.2.9-dev.255:
07-Feb-2001 (Lars Duening)
06-Feb-2001 (Lars Duening)
05-Feb-2001 (Lars Duening)
02-Feb-2001 (Lars Duening)
31-Jan-2001 (Lars Duening)
(Back to the top.)
26-Jan-2001 (Lars Duening) 3.3.23
Included changes up to 3.2.9-dev.254:
23-Jan-2001 (Lars Duening)
22-Jan-2001 (Lars Duening)
(Back to the top.)
19-Jan-2001 (Lars Duening) 3.3.22
Included changes up to 3.2.9-dev.252: (Back to the top.)
21-Dec-2000 (Lars Duening) 3.3.21
Included changes up to 3.2.9-dev.251: (Back to the top.)
19-Dec-2000 (Lars Duening) 3.3.20
Included the changes up to 3.2.9-dev.249: (Back to the top.)
15-Dec-2000 (Lars Duening) 3.3.19
Included the changes up to 3.2.9-dev.248: (Back to the top.)
06-Dec-2000 (Lars Duening) 3.3.18
Included the changes up to 3.2.9-dev.244: (Back to the top.)
27-Nov-2000 (Lars Duening) (3.3.17)
Included the changes up to 3.2.9-dev.240:
15-Nov-2000 (Lars Duening) 3.3.16
Included changes from 3.2.9-dev.238:
14-Nov-2000 (Lars Duening)
(Back to the top.)
07-Nov-2000 (Lars Duening) (3.3.15)
Included the remaining changes from 3.2.9-dev.237:
05-Nov-2000 (Lars Duening) (3.3.14)
Included the changes from upcoming 3.2.9-dev.237: Included the changes from 3.2.9-dev.236:
13-Sep-2000 (Lars Duening) (3.3.13)
11-Sep-2000 (Lars Duening)
09-Sep-2000 (Lars Duening) (3.3.12)
08-Sep-2000 (Lars Duening)
07-Sep-2000 (Lars Duening) (3.3.11)
06-Sep-2000 (Lars Duening)
05-Sep-2000 (Lars Duening)
05-Sep-2000 (Lars Duening) (3.3.10)
03-Sep-2000 (Lars Duening)
01-Sep-2000 (Lars Duening) (3.3.9)
31-Aug-2000 (Lars Duening) (3.3.8)
30-Aug-2000 (Lars Duening) (3.3.7)
29-Aug-2000 (Lars Duening)
29-Aug-2000 (Lars Duening) 3.3.6
28-Aug-2000 (Lars Duening) 3.3.5
28-Aug-2000 (Lars Duening) 3.3.4  (diff to 3.3.3: 5KB: http)
(Back to the top.)
25-Aug-2000 (Lars Duening) 3.3.3  (diff to 3.3.2: 93KB: http)
(Back to the top.)
23-Aug-2000 (Lars Duening) 3.3.2
(Back to the top.)
Bearnip ->Lars ->LDMud ->LDMud 3.3 (development) - History Lars Düning () - PGP Key
See also: LDMud 3.3 Validate this page.
Last update: Sun, 30 Sep 2007 12:14:56 -0600