GammaMOO 1.8.2g4rc2 has been released. It can be downloaded from: http://luke.dashjr.org/programs/gammamoo/ Known Bugs (does not include those that apply to LambdaMOO): -- Invalid UTF-8 sequences are not always rejected and may have unpredictable behavior. -- The base conversion builtin function does not recognize UTF-8 and will use octets instead of characters. -- eol-in/out may not function properly with data received prior to these options being changed (similar to the binary mode issue) -- Builtin functions borrowed from list utilities will freeze the MOO until they complete. Due to this issue, the affected functions are temporarily wizard-only. -- The server can be crashed or paniced by wizards if OID namespaces are used improperly, or even properly. -- Constructs such as ++list[--count] will decrement count twice -- eval() discards compile warnings on success -- E_RANGE is not always raised when referencing beyond the end of a Unicode string -- unicodestr[$] does not work properly ChangeLog since 1.8.1g3r1: Version 1.8.3, in progress -- SF bug #887464: fixed a bug in the server's startup processing, in which it scans for unknown built-in functions in active verbs (Thanks luke-jr and Gavin Lambert for reports and patches.) -- Server will report progress every few seconds (rather than every 10k objects) during potentially long-running operations (loading, validating, writing) -- New validation algorithms for cycle-detection and hierarchy checking vastly decrease startup time on large databases. -- SF bug #1552816: fixed an issue that could cause tracebacks in emergency mode to produce "Unknown Var type" errors -- SF bug #1500775: fixed two use-after-free bugs that could lead very rarely to calling the wrong functions during player connection (Thanks Garance Drosehn for the report and initial patch.) **** Changes relevant to programmers / wizards: -- SF bug #227620: add_verb() now returns (positive integer) verb index -- bf_crypt() now passes salts longer than 2 characters to the underlying C function. This works fine for traditional DES crypts and supports modern modular crypts like FreeBSD's. See the Programmers Manual for more details. -- bf_queued_tasks() entries include a 10th element (size of the task in bytes) -- bf_open_network_connection() accepts an optional third argument that associates a specific listener object with the new connection. This simplifies a lot of outbound connection management. -- network input is suspended on new connections until after the initial #0:do_login_command call returns. Thus do_login_command may now reliably set binary mode without losing data. -- connection_option()/connection_options()/set_connection_option() now recognize the following new options: (*) "intrinsic-commands" which determines which (if any) of the commands .program PREFIX SUFFIX OUTPUTPREFIX OUTPUTSUFFIX will be recognized on that connection. Option value is a list of strings, but set_connection_option() also accepts any numeric value, in which case all 5 intrinsic commands are enabled/disabled according to the value being true/false. (*) "disable-oob" which, if set true, disables all out-of-band command processing on subsequent input lines, i.e., the server behaves for that connection as if OUT_OF_BAND_PREFIX had never been #defined. Out-of-band quoting (see below) is likewise disabled. -- If "disable-oob" is set false (as it is by default), then it is now the case that all out-of-band lines will be processed as out-of-band commands (i.e., by #0:do_out_of_band_command) if no 'flush' command intervenes; setting of "hold-input" and/or making intervening read() calls will not affect this. (This fixes a bug whereby read() sometimes snarfed out-of-band lines.) -- Setting connection_option "binary" now disables all out-of-band processing on that connection. **** Changes significant to people compiling and running the server: -- several fixes for warnings, wrong use of free() vs myfree(), etc. -- fixes to support modern toolchains (bison, autoconf, ...) -- Admins can trade faster startup for increased memory consumption by disabling STRING_INTERNING in options.h -- Added a new compile option (MEMO_STRLEN in options.h) that optimizes away most strlen computations. -- A new OUT_OF_BAND_QUOTE_PREFIX is added; any player input lines that begin with this string will be stripped of this prefix and processed normally, even if the resulting line begins with OUT_OF_BAND_PREFIX. This provides a means for quoting lines that would otherwise trigger do_out_of_band_command. -- If the server is compiled with OUTBOUND_NETWORK, this may now be explicitly enabled/disabled from the server command line using +O and -O respectively. -- If the server is compiled with NP_TCP, there is now a command line option `-a SOURCE-ADDRESS' to bind and listen on a specific interface, instead of all interfaces. -- Fixed some flushing issues with emergency wizard mode (-e). The server now behaves a bit more sensibly when stdin comes from a pipe. stdout and stderr are now closed if they are not being used. (Outside of emergency wizard mode, stdout is only used on an an NP_SINGLE server; stderr is only used if no logfile (-l) is specifed.) **** Changes relevant to server hackers: -- New call_verb2() accepts verb name that is a MOO string (ie, str_ref-able) -- str_hash() replaced with a faster (and better?) string hash function Version 1.8.2g4, 31 Jan 2008 (pending) -- function_info() now returns a fifth field of data with a list of named pairs. Currently, it includes only the 'protected' flag. -- "Player recycled" tracebacks are only logged when the object being recycled is actually a player. -- Better support for pre-C99 compilers. -- INCOMPLETE and VERY DANGEROUS support for OID namespaces