Bearnip
Lars
LDMud
LDMud Release
LDMud 3.2.9
|
See also: LDMud for BeOS |
|
Version: 3.2.9 Release Date: 02. Feb 2003 Maintained by: Lars "Mateese" Düning E-mail: |
Download the source (2.7MB) from - Bearnip (USA) by HTTP (ditto as relative link) Older releases: 3.2.8, 3.2.7, 3.2.6. |
|
MD5-Sum: 36686e84ad56e2c5d64ba9817933aa47 ldmud-329.tar.gz
| ||
Over two years have passed since the last full release - in part because the goal was to make this the most stable driver in the 3.2 line so far. In addition to the bug corrections, a number of new features have been added to make the driver even more useful and flexible, without breaking too much current LPC code.
Overall I hope that you enjoy this release and find it useful.
My thanks go to all my faithful testers and critics who gave me encouraging feedback especially during the times I had to improvise the means needed to continue the work on the driver.
Thank You!add_action(): New flag AA_IMM_ARGS
implements the sane NOSPACE handling.
allocate(): Accepts an optional initialisation value
and can create multi-dimensional arrays.
ceil(), floor(): Also accept integer
argument values.
clones(): If the driver is compiled with DYNAMIC_COSTS,
the cost is proportional to the number of objects in the game.
ctime(): Accepts the output of new efun
utime() as well.
debug_info():DINFO_TRACE
to return the current call stack or the last error call stack.
debug_message(): New second argument determines where to
log the message, and if to prepend a timestamp.
deep_copy(): If DYNAMIC_COST is active, the evaluation
cost depends on size and nesting depth of copied arrays, structs
and mappings.
exec(): If this_interactive() points to
one of the involved objects, it is switched over as well,
like this_player().
inherit_list(): the inherited objects can be returned
in a tree reflecting the inheritance structure.
Virtual inherits can be returned tagged as such.
input_to(): New option INPUT_PROMPT to specify
a prompt for this input_to.
lambda(): Simul efuns with extended varargs weren't
compiled correctly.
filter(), map(),
sort_array(), walk_mapping():
Protected lvalues (e.g. &(i[0])) are allowed as callback
parameters only when the array the efun is applied on contains only one
element. They are never allowed for mappings.
garbage_collection(): An optional filename argument
specifies the filename for the next and only the next GC.
get_dir(): New flag GETDIR_PATH to return the full
pathnames.
get_type_info(): now returns the bound object for efun,
simul-efun and operator closures as well.
load_name(), object_name(),
program_name(): 0 is now
accepted as argument, the efuns returns 0 in that case.
object_info(): OINFO_MEMORY also returns
NO_INHERIT, NO_SHADOW and NO_CLONE, and gives a better account
of the memory used for strings and variables.
Single values can be returned instead of the whole array.
printf(), sprintf(): The formatter
"%^" will print "%^", for
compatibility with terminal_colour().
printf(), sprintf(): If an explicite pad
string is defined, even if it is space, the efuns won't remove
white space before a line end.
printf(), sprintf(): When printing
closures with %O, the program name
for inherited lfun closures is printed as well.
printf(), sprintf(): New format
specifier 'Q' act like 'O', but quotes special characters in strings.
printf(), sprintf(): New format
modifier '$' implements flush
formatting for strings and columns of strings.
printf(), sprintf(): In justified column
formatting, when a word is
too long to fit on a line by itself and there are at least two
characters space left on the current line, the long word is begun
immediately. Previously, such long words were always printed on a
line of their own.
query_udp_port(), send_udp(): Renamed from
query_imp_port() and send_imp().
query_verb(): Added an optional flag argument to return
the verb as given in the add_action() statement.
regreplace(): Accepts a closure to produce the
replacement string
instead of just a constant string.
replace_program(): Argument can be omitted if only
one inherit exists.
replace_program(): If the object alread has closures bound, the
efun will issue a debug_message() and fail, instead of raising
a full runtime error.
replace_program(): If the replacement program has virtually
inherited variables, it must be the first inherited program.
restore_{object,value}(),
save_{object,value}():
Non-lambda closures, symbols and quoted arrays can now be saved and
restored. This required a new savefile format, though.
sin(), cos(), tan(),
atan(), atan2(), log(),
exp(), sqrt(), pow():
Integers are accepted as arguments, too.
sizeof(): can now be used on strings, too.
terminal_colour(): Colour keys can now be mapped
using a closure.
The pattern "%%^^" is recognized as second notation for literal
"%^" besides "%^%^".
terminal_colour(): In wrapped formatting, when a word is
too long to fit on a line by itself and there are at least two
characters space left on the current line, the long word is begun
immediately. Previously, such long words were always printed on a
line of their own.
add_verb(), add_xverb(),
efun308(), file_name(),
map_array(), filter_array(),
filter_mapping(), map_mapping(),
m_sizeof(), send_imp():
set_auto_include_string():
Available only if driver is compiled with support for
deprecated efuns.
and_bits(), or_bits(), xor_bits():
The bits 5, 11, 17,... were mishandled.
call_out(): In release 3.2.8 lvalues were not
allowed as arguments - now they are again.
call_out_info(): Did not return the target object
for closure call outs.
call_resolved(): Now accepts a destructed object as
second parameter as it should.
copy_file(), rename(): Just return a non-0
value on errors, but don't throw a runtime error.
deep_copy(): Didn't handle quoted arrays properly.
filter(), map(): When used on
multi-value mappings, the driver did
not recognize when the called closure kept a reference to the
array with the values, overwriting the values in the next
iteration.
functionlist(): The filter flags didn't really work.
input_to(): The option IGNORE_BANG didn't work.
In charmode, !-escapes after the first received data are now
recognized.
map() and other efuns taking callbacks arguments:
The pattern
'function, object, extra' was parsed such that 'object' became
part of the 'extra' arguments.
notify_fail(): When used by an object which is not an
undestructed command_giver, this efun no longer leaks memory.
object_info(): The returned OIB_NAME now starts with a
'/' in plain mode.
printf(), sprintf(): A leading zero in
the field size will now print
only leading zeros and not interfere with the pad string option.
printf(), sprintf(): Column-formatting a
string with one
newline printed one newline too few if the formatstring didn't
end immediately.
printf(), sprintf(): Printing numbers
with leading zeroes and a sign character printed the sign in
the wrong place.
printf(), sprintf(): One-line columns
ending with a newline now
behave like multi-line columns and delay adding the newline
until the end of the line and only if no other columns are
pending.
printf(), sprintf():
The formatter %O/%Q stumbled over really large
arrays and mappings (this was actually a potential crasher).
regreplace(): Pattern which could match on the
empty string matched once too often at string end.
sscanf(): the format '%s%d' failed to parse 'ab1cd'
correctly.
to_string(): Can handle operator closures now.
unquote(): Unquoting symbols no longer adds a quote level.
blueprint(): Return the blueprint object.
copy_bits(): Copy ranges of bitstrings.
db_affected_rows(), db_conv_string(),
db_close(), db_connect(),
db_coldefs(), db_error(),
db_exec(), db_fetch(),
db_handles(),
db_insert_id(): Optional: mySQL support.
gmtime(), localtime(): Return the time
broken up into its constituents.
find_input_to(): Find a pending input_to.
input_to_info(): Return information about all pending
input_to's for a player.
include_list(): Returns the files included in
a program file.
m_add(): To add a new entry to a mapping and assign all
values in one go.
md5(): Compute the MD5 message digest for a string.
min(), max(): To select the minimum resp.
maximum among a bunch of numbers or strings.
sgn(): Return the sign of a numeric argument.
unquote(): Remove a quote from a quoted array or symbol.
utime(): Return the current time in microsecond resolution.
receive_udp(): Renamed from receive_imp().
privilege_violation(): Privilege
"send_udp" replaced "send_imp".
valid_trace(): New second argument to receives the argument
passed to the efun.
runtime_error(): Receives an extra argument to
distinguish between normal runtime errors, and those occuring
during a heartbeat.
include_file(), H_INCLUDE_DIRS:
The pathnames can now start with leading slashes.
notify_shutdown(): Is now called too when the driver
crashes. In that case it is passed a string denoting the type
of crash.
slow_shut_down() was not called with
previous_object(), this_player() and
this_interactive() being 0.
inaugurate_master()
and reactivate_destructed_master() are found
even when static.
catch() did not work reliably when the
driver was compiled with gcc.
heart_beat() definitions or
declarations
(e.g. private and public inheritance in this order) crashed
the driver when the heart_beat() was called.
#define'ing the name of an inline closure was not detected.
+=.
set_this_object() before the simul-efun object
was loaded.
limited().
call_resolved().
>>> and >>>=
for logical right shifts.
&&= and ||=
for logical assignments..
__LDMUD__ to identify this driver branch.
__VERSION_MAJOR__,
__VERSION_MINOR__, __VERSION_MICRO__,
__VERSION_PATCH__ expand to the various parts
of the driver version.
__WIZLIST__ specifies from where the
driver read the initial wizlist information.
__INT_MAX__ and __INT_MIN__
give the integer number limits.
__FLOAT_MAX__ and __FLOAT_MIN__
give the integer number limits.
3.14E-5.
++ and -- can now be used on
floats, too.
==
and !=, and are treated correctly in alist and array
operations.
catch() with the
keyword nolog, which
suppresses logging the caught error in the logfiles.
It is meant for objects like wizard tools.
for (int i; ...)).
([:expr]) can
be used to create empty mappings of the given width.
__CATCH_EVAL_COST__ and
__MASTER_EVAL_COST__ for the corresponding evalcost
limits.
__RESET_TIME__ and
__CLEANUP_TIME__
to return the default reset and cleanup interval time.
warn_deprecated causes the compiler to print a
warning when a deprecated efun is used.
:: operator did not recognize the separate
namespaces
of variables and functions:
void foo(string id) { ::id(id); }
lead to a syntax error.
"*"::foo() checks just the directly inherited
programs.
apply())!
__DEBUG_LOG__.
replace_program() are
now converted into alien-lfun closures, so that the error handler
has a chance to determine the originating object.
b = 0 || &a; b = 0 || &a; are detected.
ldmud.
--pidfile filename
to write the pid of the driver process into a file.
--erq filename to choose a
different name for the ERQ executable (default is 'erq').
The option can also
be used to specify the full pathname of the executable, and pass
simple arguments to the erq.
--no-compat resp. --compat).
--min-malloc and
--min-small-malloc to
specify the size of the initial block allocations.
--wizlist-file and
--no-wizlist-file to
control from where the driver reads the initial wizlist
information.
--args filename reads the
commandline
arguments from a textfile. These argument files can be nested.
--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.
--hostname <name> to
specify the hostname, overriding the value returned by the
system.
--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.
trace-code enables the bytecode
tracing.
use-deprecated allows
to disable obsolete and deprecated efuns. If enabled, the macro
__DEPRECATED__ is defined.
use-set-is-wizard,
use-set-light and use-process-string
to configure the corresponding optional efuns.
'catch_udp_port to just udp_port.
--execdir <dir> allows the
to override the default ERQ_DIR specification for the directory
with the callable executables.
dumpallobj now also creates a dump of all
destructed objects in the file <mudlib>/DEST_OBJ_DUMP.
LANG environment variable.
Bearnip
Lars
LDMud
LDMud Release
LDMud 3.2.9
|
Lars Düning () - PGP Key |
| See also: LDMud for BeOS | Validate this page. |