Provide two implementations:
alists_sorted.c keeps alists with sorted key arrays. However this is restricted to LPC comparable types (numbers and strings) and homogeneous keys.
alists_unsorted.c implements alists without sorting the keys. If the Lib does not rely on ordered key arrays this implementation offers far superior performance for some operations.
Add a new type 'lpctype' to contain a type object, describing a compile-time
type, together with a decltype() operator and to_lpctype() and check_type()
efuns.
Added info about the number of simul_efuns (active or not) in
the simul_efun table (simul_efun_table).
Some admins may find this interesting to verify that they stay
below the limit for creating real closures to sefuns (currently
2048).
Add a new type and data structure to LPC. Lightweight objects combine
properties from structs (small memory footprint, automatic lifetime
management) and objects (capsulation, functions).
(Implements #688)
Extend the type system with named object types like
'object "/std/room" var;' to include a mandatory program.
This is only checked by runtime type checks.
(Implements #842)
When a compile error is reported, pass the line numer as an additional
argument to the master when calling log_error(), so the mudlib can
provide better error messages or file context as part of the response.
(Implements #898)
When query_ip_number()/query_ip_name() is given a non-interactive object
return 0 (instead of throwing an error), just like the original
implementation did.
Since introduction of type objects struct_info() and variable_list()
didn't return any type information anymore. functionlist() however did,
used its code for converting type objects to integers also for the
other two efuns.
Added a test that compiles the supplied sefun implementations for
deprecated efuns to check that they still work with newer drivers.
Fixed a few bugs so the test will work.
Added a configure_interactive option IC_ENCODING that denotes
the source and target encoding of the interactive. Input and
output will automatically converted using this encoding.
Added a configure_driver option DC_FILESYSTEM_ENCODING to specify the
encoding for filenames. It is initialized per default with the default
locale's encoding with the exception of the C locale which gets UTF-8
as its encoding.
The lexer now converts each file internally to UTF-8 before lexing and
parsing it. Added a driver hook H_FILE_ENCODING to query the encoding
for each file (default is the very restrictive ASCII encoding).
The mudlib can now configure signal handling for
SIGINT, SIGHUP, SIGUSR1 and SIGUSR2 via configure_driver().
Added the new possibility of interrupting an LPC or Python
execution thread via a signal.
configure_driver gets options to configure the time intervals
for swapping out programs and variables and for calling
the cleanup and reset hooks.
driver_info() can be used to query these intervals.
The replacement simul-efun implementations for set_buffer_size,
set_combine_charset, get_combine_charset, set_connection_charset and
get_connection_charset threw errors when there was no current
interactive object. The original efun implementation ignored
that quietly. So correcting the simul-efun implementations.
(Fixes#855)
The compatibility header for debug_info() did not
include some defines the sefuns debug_info() needs.
They are defined in driver_info.h, so this will be
included if the trace defines are not present yet.
(Resolves#0000857)
Removed the efuns seteuid() and export_uid() in favor of the new
configure_object() with OC_EUID flag. UIDs are constant this way
and all EUID changes will get master oversight using the privilege
violation checks (Resolves#828).
When Python support is compiled in, operator closures use
another closure type range. Update the lpctype.h to reflect
this. Also implement a __PYTHON__ define, to detect the
python support in mudlibs.
Removed the special driver actions 'status', 'malloc', dumpallobj'
and 'opcdump'. They can be implemented as normal actions.
Also removed the efun set_is_wizard() which activates these actions.
(Issue #596)
Removed the efun query_udp_port() in favor of the new
driver_info(). Also the udp port is no longer the default
value for the tcp port argument of net_connect, because it
makes no sense. (Issue #596)
Removed the query_ip_name() and query_ip_number() efuns in favor of the
new interactive_info(ob, II_IP_NAME), interactive_info(ob, II_IP_NUMBER),
and interactive_info(ob, II_IP_ADDRESS). (Issue #596)