01-Apr-1999 (Lars Duening) -- Release 3.2.6
- Changed efuns:
+ allocate_mapping() renamed to m_allocate(). The old name
is still available as alias.
+ clone_object() accepts objects as templates.
+ efun308() renamed to set_environment(). The old name is
still available as alias.
+ file_name() renamed to object_name(). The old name is still
available as alias.
+ filter_mapping() renamed to filter_indices(). The old name
is still available as alias.
+ mapping_contains() renamed to m_contains(). The old name is
still available as alias.
+ map_mapping() renamed to map_indices(). The old name
is still available as alias.
+ mapping_contains() renamed to m_contains(). The old name is
+ m_values() can return any column of a mapping.
+ notify_fail() returns 0.
+ set_this_player() accepts 0 as argument.
+ to_int(), to_object() and to_float() accept their result
type as argument.
- Corrected efuns:
+ call_out(): if the command_giver destructs before the callout
is activated, this_player() is made sure to be 0.
+ map_array() stumbled when objects in the array in question
were destructed during the operation.
+ sizeof(mapping) no longer counts destructed objects in
the mapping to the size.
+ sprintf() of float values < 1.0 no longer causes a SING error.
+ terminal_colour() correctly wraps strings with a length one less
than the wrap limit.
+ this_interactive(): during login it points to the login object.
- New efuns:
+ abs(): return the absolute value of the argument.
+ all_environment(): return all environments of an object.
+ caller_stack(): return the call stack.
+ clonep(): test if an object is a clone.
+ copy(): produce a shallow copy of the argument.
+ deep_copy(): produce a shallow copy of the argument.
+ filter(): filter an array or fill-width mapping.
+ load_name(): returns the filename of an objects blueprint.
+ load_object(): loads an object.
+ make_shared_string(): enters a string into the shared string table.
+ map(): map an array or full-width mapping.
+ m_reallocate(): changes the width of a mapping.
+ object_info(): returns internal information about an object.
+ program_name(): returns the name of an objects program.
+ set_next_reset(): set the time of the next reset.
+ unmkmapping(): deconstruct a mapping to arrays.
+ upper_case(): make a string all upper case.
+ widthof(): return the width of a mapping.
- Master Object:
+ All functions can be static.
+ Functions like privilege_violation() or heart_beat_error(), but
also valid_read() and valid_write() no longer receive destructed
objects as arguments.
+ Apply 'object_name()' renamed to 'printf_obj_name()'.
- Compiler:
+ New predefined macro __MAX_EVAL_COST__ expands to the evaluation
cost limit.
+ Bugfix: __DOMAIN_NAME__ on some machines returned the NIS, not the
DNS domain.
+ Bugfix: __MASTER_OBJECT__ could be set to a non-canonic name.
+ Bugfix: __FILE__ and __MASTER_OBJECT__ returned names with leading
'/' in compat mode.
+ Bugfix: (virtual) inheritance of variable-only objects with
variable initialisation doesn't crash the driver anymore.
+ Bugfix: #'++/#'-- in closures work.
- Fixed Crashers:
+ Errors in a callout to an efun closure.
+ Adding arrays up to and over the upper limit.
+ Destruction of non-interactive snoopers.
+ funcall()/apply() on a swapped variable.
- Other Changes:
+ The old behaviour of explode() and previous_object() is no longer
available. Floats, transcendent functions, mappings and extended
varargs are now permanent features of the driver.
+ Re-implemented the handling of heartbeats, resets, cleanups and
swapping in order to avoid caused lags. This also makes
the config parameter RESET_GRANULARITY unnecessary.
+ If used, the __INIT() function is protected instead of global, and
can't be called from outside the objects anymore (it shouldn't be
callable at all anyway).
+ When subtracting mappings from each other, the subtrahend may
be of any width, but only its keys count.
+ The 'status tables' command has an additional entry 'Object status'.
+ Bugfix: fixed an eval cost leak in catch().
+ Bugfix: fixed memory leak in terminal_colour().
+ Bugfix: if a command disconnects, but not quits a player, the prompt
is no longer printed (before it ended up on stdout, cluttering
the logfiles).