Bearnip ->Lars ->LDMud ->LDMud 3.3 (development)

LDMud 3.3 (development)

Version: 3.3.715
Release Date: 30. Sep 2007
Maintained by: Lars "Mateese" Düning
E-mail:
Summary and detailed list of recent changes.
Full detailed history of changes since 3.2, including links to early diffs.

Download
- the source for ldmud-3.3.715.tar.gz (2.5 MB) - svn://svn.bearnip.com/ldmud/version/3.3.715



This is the bleeding edge development version of LDMud. It serves as an environment to implement experimental features, thorough changes to the code base and generally code dangerously. Obviously this is not the driver you want to run a production mud on - for that you'd be better of with the Release or the Current version of the driver.

Everybody else, have fun!

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 #0000377).
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.
The older change descriptions can be read here.

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.)
12-Mar-2006 (Lars Duening) 3.3.713  (diff to 3.3.712: 77 KB: http)
08-Mar-2006 (Malcom Tester)
07-Mar-2006 (Lars Duening)
06-Mar-2006 (Lars Duening)
03-Mar-2006 (Lars Duening)
01-Mar-2006 (Lars Duening)
28-Feb-2006 (Lars Duening)
20-Feb-2006 (Lars Duening)
20-Feb-2006 (Gnomi)
08-Jan-2006 (Lars Duening)
05-Dec-2005 (Lars Duening)
04-Dec-2005 (Gnomi)
04-Dec-2005 (Lars Duening)
02-Dec-2005 (Lars Duening)
27-Nov-2005 (Lars Duening)
26-Nov-2005 (Lars Duening)
(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.)
15-Feb-2003 (Lars Duening) 3.3.391  (diff to 3.3.390: 36 Bytes: 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.)

The older changelog entries can be read here.


Summary of changes since 3.2

(Back to the top.)
Bearnip ->Lars ->LDMud ->LDMud 3.3 (development) Lars Düning () - PGP Key
Validate this page.
Last update: Sun, 30 Sep 2007 12:14:56 -0600