Changelog for the Beta Releases =============================== Where possible, notes in [brackets] indicate when the error was introduced. Non-specific version numbers indicate the following: - Penn (Present in PennMUSH and introduced by porting.) - 2.0 (Introduced in TinyMUSH 2.0.10p6 or earlier.) - 2.2 (Introduced in TinyMUSH 2.2.5 or earlier.) - MUX (Introduced in TinyMUX 1.6 or earlier.) - MUX2 (Present in MUX 2.0 or later and introduced by porting.) - 3.0 (Introduced in TinyMUSH 3.0 at some point in time.) - 3.1 (Introduced in TinyMUSH 3.1 at some point in time.) Names after the bug origin version are the first sources for the bug reports. Where no name is given, the bug was discovered by the developers. ("RMG" refers to Robby Griffin, aka Alierak; he joined the development team on 3.0 beta 18 and is not individually credited after that point.) Release history: TinyMUSH 3.0 beta 1: Initial beta release, 1999/09/27. TinyMUSH 3.0 gamma: Standard "stable" release, 2000/12/01. TinyMUSH 3.1 beta 1: Initial beta release, 2002/05/08. TinyMUSH 3.1 gamma: Standard "stable" release, 2004/06/21. ============================================================================= TinyMUSH 3.1 Beta History ============================================================================= 06/21/2004: TinyMUSH 3.1 gamma release - Feature: @pemit/@oemit can take a /move switch, per suggestion by Mike Whitaker. - Fix: Fatal bug in structure() fixed; default values should be optional. [3.0; Traest] - Fix: Stack items could be set to -1 by pop() or toss(). [3.0; Draci] - Fix: Evaluating the termination condition in while() or until() could corrupt the buffer it evaluated in, causing inconsistent behavior. [3.0; Draci] - Fix: Better error handling around regular expression matches, fixing at least one bug where regedit() could use an uninitialized buffer. [Penn] - Fix: @list memory was counting vattr names twice. [3.1] - Fix: Fixed a cache memory leak when in standalone mode. [3.1] - Misc: Added support for Perl-style curly braces in the regedit() replacement string, i.e. ${1} is the same as $1. The curly braces may need to be escaped in order to work. - Misc: Compatibility update for x86_64 cpu types (e.g. opteron). - Misc: Code cleanup around parser calls, after making sure the parser always nul-terminates its own output. - Misc: Miscellaneous minor code cleanup. ----------------------------------------------------------------------------- 08/13/2003: Beta 11 - Fix: @trigger/now switch had no effect. [3.1b7; Draci] - Fix: Patched gdbm-1.8.0 bugs, based on gdbm-1.8.3: - gdbm_reorganize (see 'wizhelp opt_frequency') had a small memory leak. - Too many free blocks in the gdbm database could cause an overflow. - Fix: Beta 10 cache changes caused some attributes not to be written out to the gdbm file. [3.1b10] - Fix: Lookup slave no longer leaves zombie processes; requires rerunning configure script to look for wait4(). [MUX2; Brazil] - Misc: If the last line of the logfile is a GDBM panic: write error, the Startmush script will stop, and direct user to run a Reconstruct first. ----------------------------------------------------------------------------- 07/30/2003: Beta 10 - Fix: The cache now keeps a single freelist. Fixed several bugs. [3.1] - Fix: Immediate commands that modify the queue are no longer truncated at the next semicolon, unless the command itself was halted. [3.1a2] - Fix: @halt checks queue entry ownership more carefully to avoid referencing Owner(#-1). [MUX] - Fix: Don't allow tel_anything objects to be teleported by anyone. [3.1a6] - Fix: If no database is loaded, do not log the name of the player when setting config permissions. [3.1] Because this version has cache code changes, games running on this version should be backed up daily! ----------------------------------------------------------------------------- 04/28/2003: Beta 9 - Feature: Added elockstr(). Idea from Joel Ricketts. - Fix: Restored missing statement so exits don't get set with the wrong default flags. [3.1b8; Threnody] - Fix: Delimiters are passed by reference to avoid a gcc 3.1 bug. - Fix: The @Ttofail attribute has been corrected to @TOFail. [3.1a8] - Fix: The MUSH's "dumping" status is cleared more carefully when a child process exits, making sure it was really a forked dump process and that it really ended. [MUX; Brazil] - Fix: Large TRACE output no longer involves the use of freed memory. [MUX; Brazil] - Fix: Exits and rooms may not use the "home" command. [2.0] - Fix: If the Dropto of a room is set to home, it's not really invalid. [3.1b8] - Misc: @pemit and related commands/functions avoid duplicate recipients. - Misc: If ladd() is given a blank list, it returns 0 instead of complaining about the number of arguments. - Misc: Unused lock-related code removed from get(); use lock() to retrieve locks. [2.0; Brazil] - Misc: Improved ANSI and delimiter handling in table() and related functions. - Misc: Improved ANSI handling in @edit / edit(). - Misc: When logging, garbage isn't out-of-range. - Misc: Improvements made to lookup-slave buffer overflow protection. - Misc: Limited lookup-slave child processes to 20 in case of denial-of-service attack. [MUX; Brazil] - Misc: Configure always checks for zlib if using MySQL. - Misc: 'make clean' no longer removes the tinygdbm library. - Misc: Workaround for broken 'make depend' on MacOS X and possibly other systems. ----------------------------------------------------------------------------- 12/02/2002: Beta 8 - Feature: speak() now takes a says-string parameter, and obeys the say_uses_comma conf parameer. Please note that the argument order has changed, to facilitate the common case of not wanting a total transformation. - Feature: If @speechformat has the no_name attribute flag, an empty result is treated as valid, so all-side-effect results are possible. - Feature: lpos() can check multiple characters. Based on a suggestion from Joel Ricketts. - Feature: Added objcall(), which evalutes the text of an attribute from another object's perspective, like a combination of u() and objeval(). Idea from Joel Ricketts. - Feature: Added fcount(), fdepth(), ccount(), cdepth(), for getting function and command invocation and recursion counters. Based on a concept from Shadowrun Denver MUSH. - Feature: A new conf parameter, c_is_command, controls whether %c is last command (default) or ANSI substitution. - Feature: @mail supports separate to/cc/bcc lists. Patch from Simon Bland, plus misc fixes. - Feature: @doing has a /quiet switch to avoid "Set." messages. Based on a suggestion from Solace@Evolution. - Fix: The border() family of functions supports left-indentation (spaces at the beginning of a line) properly. [3.1; Sally Schreiber] - Fix: Object stack limits are properly enforced. [3.0; Joel Ricketts] - Fix: A rare problem with spurious permission denied messages when setting an attribute has been fixed. [2.0; Joel Ricketts] - Fix: Running MEMORY_BASED works again. [3.1; Tyr] - Fix: Since our copy of gdbm includes an important change, we build it as libtinygdbm.a to avoid linking netmush with an unmodified gdbm, as sometimes happened on Linux systems. - Fix: Permission to lock/unlock an attribute should depend on the victim's CONSTANT flag, not the executor's. [3.0b14] - Fix: Some integer math results were displayed as "-0". - Fix: Numeric conf parameters such as sacrifice_factor that are used in division may not be set to zero. - Fix: rloc() now works on exits as documented (returns destination). - Fix: Buffer overflow in SIGTERM handler. [3.0b8] - Fix: God can't be set GOING or @chowned. [2.0; Brazil] - Fix: A player being destroyed may lack a Destroyer attribute if simply set GOING by God. [MUX; Jeff Czyz] - Fix: Valid hostnames returned by the lookup slave may start with numbers. [MUX; Brazil] - Fix: Global registers should be cleared between interactive commands. [2.0; Brazil] - Fix: Fatal bug in regedit() fixed. [3.1a4] - Fix: Infinite loop in regeditall() fixed. [3.1a4] - Fix: Player names consisting of only whitespace are not allowed. [3.0; Brazil] - Fix: Corrected the function that's supposed to avoid random number generator bias. [3.1b6] - Fix: children(no such object) should not return all unparented objects, but children(#-1) should. Similar fixes for inzone and zwho. [MUX] - Fix: Extra space no longer appears after columns() output. [MUX] - Fix: config() can access dbref conf parameters [3.1a8; Eric Kidder], and dbref conf parameters can be registered by modules. [3.1a8; Tyr] - Fix: Renamed "mstate" parameters to avoid conflict with the malloc facility in RedHat 8.0. [2.0; Pete C.] - Fix: Commands that begin with a single backslash are handled properly as @emits. [2.0; sTiLe] - Fix: Spurious CPU limit warnings from a weird clock() on Linux and BSD have been eliminated. [3.1b1] - Misc: The global attribute flags no_clone (c) and constant (k) now sohw up in an examine. - Misc: Unprivileged exits may destroy themselves, requested by drdubious. - Misc: The hide power is also required in order for non-wizard idlers to be affected by the idle_wiz_dark conf parameter. [MUX; Dellin@Aftermath] - Misc: Improved protection against invalid dbrefs in dbref-type conf parameters. - Misc: config() can access option conf parameters, of which the only one is signal_action, readable by God. - Misc: Logic for 64-bit alignment of the alloc pool_header struct was wrong, but worked anyway. [3.1a8] - Misc: The paranoid_allocate conf parameter checks all buffer pools (previously omitted the player cache pool). - Misc: Assorted spelling corrections and other minor cleanup. - Misc: Re-released under the Artistic License. ----------------------------------------------------------------------------- 08/29/2002: Beta 7 - Feature: @verb now takes a no_name switch, which prevents the actor's name from being prepended to the default o-message. - Feature: The format and text of a say and pose can be arbitrarily altered, via the @speechformat attribute and SPEECHMOD flag on the speaker, or the speaker's location. - Feature: New conf parameter huh_message lets you change the Huh? message when a command cannot be matched. - Fix: A memory leak related to global registers has been fixed. [3.1b6] - Fix: Wildcard and regexp pattern matching are better at handling worst-case scenarios. Added new conf parameter wildcard_match_limit. [2.0; Javelin] - Fix: @listmotd works properly for non-wizards again. [3.1a7; Jaye] - Misc: check_access() is more efficient. Based on MUX2 algorithm. - Misc: Assorted bits of code cleanup. ----------------------------------------------------------------------------- 08/14/2002: Beta 6 - Feature: Global registers can now be named arbitrary things, with the number permitted by an action list limited to the conf parameter register_limit. setq() can now take multiple name-value pairs. - Feature: munge() now passes its input delimiter to the u-function as %1. Idea from PennMUSH. - Feature: More informative error message when a function is given the wrong number of arguments. Idea from Philip Mak. - Feature: Players with the See_Queue power can now @ps other players, not just @ps/all and themselves. - Misc: The 'xmatch' attribute flag (added in beta 5) is now called 'rmatch'. Rather than setting the results of the match into x-variables, the result is set into named global registers. This eliminates the issues with clobbering variables, needing to use the Now flag, etc. - Misc: Replaced the random number generator with Mersenne Twister. Use derived from PennMUSH, which derives it from MUX2. - Misc: The maximum length of a comsys header is now 64 characters instead of 32. - Fix: dbconvert -C crash fixed. [2.0; Jake] - Fix: Fatal bug in children() fixed. [3.1b4; Pete C.] - Fix: The Quota power works (this feature originally didn't make it into 3.0 from MUX, an oversight). [3.0] - Fix: The ampersand is no longer dropped from unrecognized entities in html_unescape(). [2.0] - Fix: A quirk in the truncation of long strings has been fixed. [2.2; Brazil] - Fix: Exit names are no longer mutilated when ansi() is used to embed multiple ANSI codes in them. [MUX; Pro] ----------------------------------------------------------------------------- 07/26/2002: Beta 5 - Feature: The new attribute flag 'now' causes a matched $/^-action to be executed immediately. - Feature: The new attribute flag 'xmatch' causes wildcard match data for a $/^-action to be set into x-variables as well as placed on the stack, i.e. '$hit *{victim} with *{weapon}' to retrieve the victim and weapon strings via %_ and %_ is now possible. Based on an idea from KiliaFae. - Feature: There are five new search classes -- ueval, uthing, uplayer, uroom, uexit. They call an obj/attr u-function for evaluation. This makes it unnecessary to deal with the brackets-escaping issues that plagued use of search() in conjunction with the eval classes. - Feature: "Altered reality" realm states like invisibility are supported through the use of the PRESENCE flag and six new locks (HeardLock, HearsLock, KnownLock, KnowsLock, MovedLock, and MovesLock). The module API for did_it() has changed to support this. - Feature: The new functions hears(), moves(), and knows() check permissions related to Presence. - Feature: The new /speech switch to @pemit explicitly marks a @pemit as speech subject to Presence checks. @oemit now takes two new switches, /noeval and /speech. - Feature: The new group() function splits/sorts a list into groups. - Feature: hasflag() can now detect object types. - Feature: The new hasflags() function can operate on multiple lists of flags and types, returning true if all elements in any of the lists are true. - Misc: elock(), hasflag(), haspower(), and type() now all return #-1 NO MATCH when they can't find the object they're checking. Previously they returned #-1 NOT FOUND; for consistency's sake, they now behave like everything else. - Misc: Caution is exercised when a match result could be #-3. - Misc: The check_paths script (used by other scripts) clarifies which things are errors and which are warnings. - Fix: An off-by-one error which could cause crashes and corruption when saving the database has been fixed. [3.1; Ashen-Shugar] - Fix: The game/backups directory is now correctly included with the distribution. ----------------------------------------------------------------------------- 06/27/2002: Beta 4 - Feature: The new no_name attribute flag prevents the actor's name from being prepended when that attribute is used as an @o-attr (including with @verb). - Feature: The new conf parameter say_uses_comma, if enabled, will insert the grammatically-correct comma into say and @fsay. - Feature: The new conf parameter say_uses_you, if disabled, will always show the speaker ' says' rather than 'You say'. This is more convenient for environments where activity is often logged and shared. - Feature: lpos(), lattr(), lexits(), lcon(), xcon(), children(), lparent(), and the grep() family now take an output delimiter. - Feature: Added connrecord(), connected player record (as in WHO). - Feature: Added @@(), which is like null() except the argument is not evaluated. Idea from PennMUSH. - Feature: @conformat and @exitformat get their visible contents/exits lists passed as %0. - Feature: Flatfiling now automatically cleans the attribute table. (Use -q to turn this off.) Removed @dbclean, since this is now unnecessary. - Feature: Restore script can now handle archives produced by Archive. - Fix: Minor parts of structure db were not properly cleared at startup: connected flag, internal 'dirty' flag, and cpu time used. [3.1a8] - Fix: Prevent infinite loop in cache when cache fills with nothing but modified attributes (extremely rare, but not impossible). [3.1] - Fix: Restore script determines database name from archive name by removing extension, not truncating at second dot. [3.1a9; Scott Schappell] - Misc: Scripts now use the correct extensions for various compression formats, and handle the bzip2 compression format. - Misc: The expanded_who power no longer grants the ability to see Dark players in WHO. (Previously those with the power could, but weren't able to get that info via functions.) - Misc: pos() strips ANSI out of the string to search for, in addition to the string to search within. - Misc: @addcommand sanity-checks command names. - Misc: Minor cleanup. ----------------------------------------------------------------------------- 06/07/2002: Beta 3 - Feature: The new choose() function picks an element from a list on a weighted-random-choice basis. - Feature: The new helptext() function retrieves an entry from an indexed textfile (i.e., help, news, or anything else added via the helpfile or raw_helpfile conf directives). - Feature: The new oemit() function provides the equivalent of @oemit. - Feature: trim() can now take a trim string of arbitrary length. - Feature: Added cache_put_notify and cache_del_notify modules API hooks. These hooks are called when data is added, changed, or deleted from the MUSH cache. - Fix: Crash bug with entrances() fixed. [3.1b1; Neva] - Fix: @nameformat, @conformat, and @exitformat now respect the FREE flag. [3.1b1; Neva] - Fix: Conf file entries with a dbref, like 'master_room #2', should now work properly. [3.1a8; H'kar] - Fix: Update should now work on systems with broken local domain resolution. [3.1a7; Neva, Christy Schulte] - Fix: Clearing an attribute updates an object's Last Modified timestamp. [3.1a6] - Fix: clock() checking for function CPU time should now work on NetBSD. [3.1a6] - Fix: Corrected typo in flag_alias for COMMANDS. [2.2; Felan] - Fix: Startmush still didn't back up module dbs correctly. [3.1b2] - Fix: Space between dbref and flags was missing for MARKER9. [3.0; Taran] - Fix: Failed to link with zlib when needed by mysql. [3.0; Michael Broggy] - Fix: Database structure initialization for modules is done correctly. [3.1a6; Taran] - Misc: FREE flag is respected for @conformat and friends. [3.1b1; Neva] - Misc: The Hide power or Wizard status is always required to avoid connection detection. [3.1a7] - Cosmetic: Shout messages include the grammatically correct comma after "shouts". [2.0; Neva] ----------------------------------------------------------------------------- 05/19/2002: Beta 2 - Feature: istrue() and isfalse() functions added (basically iter()-style filterbool() and reverse). - Feature: speak() function added, for speech-formatting and parsing. - Feature: If invoked with the -f switch, the Backup script only makes a flatfile. - Feature: The Build script accepts options to be passed to the configure script, enabling simple custom installation. - Feature: Introduced do_second() module API hook. Useful for modules which must update regularly. - Fix: The game/data directory is once again included in the distribution. [3.1; Neva] - Fix: Compilation error when no modules were enabled. [3.1; d@vid.org.uk] - Fix: Potential crash if netmush or dbconvert is invoked without a slash in the name. [3.1] - Fix: dbconvert should print usage message instead of crashing if invoked without a gdbm file. [3.1a9] - Fix: Numeric hashtable entries could have different struct layout than string entries, causing hashtable functions not to work. [3.1b1] - Fix: Objects with dbrefs higher than mudstate.attr_next were not written to the database. [3.1; Christy Schulte] - Fix: Backup invoked tar with wrong options. [3.1a10] - Fix: *player changes broke *dbref, as in num(*#1). [3.1b1] - Fix: Memory leak in let(). [3.1b1] - Fix: If a non-null attribute default is available, the server-supplied default string should never be used. [3.1a2] - Fix: log_perror() cleared errno before trying to log the error. [2.0] - Fix: Startmush could remove module databases due to inconsistent glob handling in some shells. [3.1a9; Christy Schulte] - Fix: Fixed typo in module call to db_write(). [3.1b1] - Misc: Avoid scanning the entire help table when asked for a nonexistent, non-wildcard entry. [2.0] - Misc: Reduced stack memory usage of functions such as shuffle(), with a rewrite of helper function list2arr(). - Cosmetic: Shout messages include the grammatically correct comma after "says". [2.0; Neva] ============================================================================= TinyMUSH 3.0 Beta History ============================================================================= 9/28/99: Beta 2 - Fix: Compilation problem with MEMORY_BASED defined. [3.0; Roloran] - Fix: XFREE macro missing argument compiler error. [3.0; Roloran] - Fix: Fatal error in let(). [3.0a8; RMG] - Fix: Off-by-one, integer overflow, and bounds-checking issues. Verified with Purify. [RMG] - Fix: Cannot set/reset ROBOT flag on players. [MUX] ----------------------------------------------------------------------------- 9/29/99: Beta 3 - Fix: Pueblo support works again. [3.0; GrimJim] - Fix: Structure names cannot contain periods. [3.0a8; stile] - Fix: translate() works as documented, and handles backslashes correctly. [MUX; RMG] - Fix: pmatch() correctly handles dbrefs. [3.0a11; RMG] - Fix: Command switch issues fixed for @mail, @malias, @wipe. [2.0; RMG] - Fix: Side-effect function permissions are checked more thoroughly. [MUX; RMG] - Fix: Double-free issue in switchall(). [3.0a8; RMG] - Change: mix() can take up to twelve arguments (rather than ten). - Cosmetic: Dealt with a compiler warning in flags.c. - Docs: Updated mailing list subscription info in help. ----------------------------------------------------------------------------- 9/30/99: Beta 4 - Fix: @clone correctly copies all flags. [3.0; RMG] - Fix: @open requires the invoker to have contents. [2.0; RMG] - Fix: Parent recursion issues have been prevented in various places. [2.0; RMG] - Fix: parse() checks function invocations in a manner identical to iter(). [2.0; Myrrdin] - Fix: Slaves are reaped with waitpid() so zombies are not created by @restart (may be Linux-specific problem). [MUX; Myrddin] - Fix: Signals are unblocked at startup, allowing SIGUSR1 to be invoked for later instances in restarts. [MUX; RMG] - Misc: The unused parentable_control_lock parameter has been removed. - Misc: A variety of compiler warnings related to uninitialized variables, unused variables, implicit function declarations, etc. have been taken care of. ----------------------------------------------------------------------------- 10/2/99: Beta 5 - Feature: lstructures() and linstances() functions added. - Fix: @dbclean has been rewritten, and now works (and is more efficient). [3.0; Thomas Wouters] - Fix: Where pow() is used in conjunction with htonl(), it is cast to unsigned int. This fixes a compilation issue with Linux and gcc -O. [3.0a5; stile] - Fix: Some structures are no longer allocated as lbufs, but are explicitly malloc'd in a type-specific manner. [2.0] - Fix: Forwardlists are loaded before startups are run. [2.0] - Fix: @mail/fwd now explicitly checks to see if a mail message is in progress. [MUX; Morris] - Fix: INFO now works when used by logged-in players. [3.0a2; RMG] - Fix: trunc() truncates rather than rounds. [MUX; Keran] - Fix: Dumping and shutdown check to make sure the game is not already dumping. [2.0; Geoff Gerrietts] - Fix: The display of exit destinations for Transparent rooms now handles "special" exit destinations. [2.2/MUX; RMG] - Fix: Some oddities with attribute renaming have been taken care of. [2.0; RMG] - Fix: The static buffers for Name and PureName are of the appropriate type. [MUX; RMG] - Fix: Instance name lengths are restricted to half an sbuf. [3.0a8; RMG] - Fix: Startmush handles checking if the game is running in a better manner. [RMG] - Misc: The GDBM bucket cache size has been reduced to 1 bucket. ----------------------------------------------------------------------------- 10/4/99: Beta 6 - Fix: Money is no longer deducted twice when creating an object. [3.0] - Fix: Another pow()/htonl() fix. [3.0a5; Markus Stenberg] - Fix: Various compile-time option #ifdef's cleaned up. [3.0] - Fix: Removed spurious spaces in columns() when a string is truncated. [3.0b2; Keran] - Fix: Cosmetic change to @list textfiles. [3.0a5] - Misc: chown_anything also lets you @chown to anyone. - Misc: Doubled the size of the function and user function hash tables. - Misc: Got rid of the SIDE_EFFECT_FUNCTIONS compile-time option, since you can simply function_access the side-effect functions to 'disabled'. ----------------------------------------------------------------------------- 10/5/99: Beta 7 - Feature: New conf parameter stripped_flags determines what flags are stripped when an object is subject to a @chown, @chownall, or @clone. These commands now take a /nostrip switch, which negates stripping. For consistency, @clone/inherit no longer preserves IMMORTAL (only INHERIT). - Fix: Side-effect function prototypes exist again. [3.0b6; Tina Verras] - Fix: You can no longer set the cost of non-things in @clone (consistent with other object-creation commands). [MUX] - Fix: The value of @clone'd objects is now correctly set. (Previously, all cloned objects had a value, i.e. Pennies, of zero.) [MUX] - Misc: All @clone switches except /inventory and /location can be combined. - Misc: @clone/preserve can be used by anyone, but you must control the original object's owner. - Misc: ansi() compacts the ANSI codes, and makes a better attempt against avoiding bleeding. ----------------------------------------------------------------------------- 10/7/99: Beta 8 - Feature: @cron implemented, providing Unix-style cron scheduling. @daily has been re-implemented using the @cron facility. - Feature: Functions that take output delimiters can now take a null output delimiter, signified by the token '@@'. - Feature: The examine command has a new switch, /pairs. This shows paren/bracket/braces-matching in ANSI color. (Based on the engine from ChaoticMUX's parenmatch() function.) - Feature: New conf directive raw_helpfile allows the addition of non-evaluated helpfiles. - Feature: Added the MUSH Manual to the distribution in helpfile format. (Thanks to Alierak and sTiLe.) - Feature: delete(), mid(), left() and right() no longer strip ANSI characters. - Fix: SQL queries error out properly when support is not compiled in. [3.0a13; Blane Dabney] - Fix: @clone/nostrip can be combined with all other @clone switches. [3.0b7] - Fix: The 2.2 database conversion converts the Builder flag to the Builder power, rather than just discarding the flag. [3.0a4] - Fix: Comtitles are terminated with ANSI_NORMAL where appropriate. [MUX; Brazil] - Fix: sortby() no longer ignores its output delimiter. [2.2] - Fix: translate() can handle compacted ANSI strings generated by ansi(). [3.0b7] - Fix: hastype() can be used on an object, even if you can't examine it, since you can type() anything. [MUX; stile] - Misc: Typecast time_t to int when using it in conjunction with printf(). - Did a diff between ChaoticMUX-S3, and TinyMUX 1.6p0. Derived a suite of bugfixes and some enhancements, as follows: - Feature: @function/noeval defines a user-defined function whose arguments are not pre-evaluated. - Feature: An ANSI underline code, %xu, has been added. - Feature: log() can take an optional second argument, the base. - Fix: elock() obeys the pass_locks power. [MUX] - Fix: Pool headers are 64-bit aligned. [2.0] - Fix: Calls to site_check() check the return value ANDed against the flag. [2.0] - Fix: The overflow buffer for functions is terminated properly. [MUX] - Fix: Missed some places where see_hidden should apply. [3.0a14] - Fix: OUTPUTSUFFIX without OUTPUTPREFIX works. [2.0] - Misc: All calls to abort() log a message. [2.0] - Misc: mail() and mailfrom() check arg ranges in the standard way. [MUX] - Misc: ANSI defines are used rather than embedding raw codes. [MUX] - Misc: No spurious extra args to raw_broadcast() calls. [MUX] ----------------------------------------------------------------------------- 10/8/99: Beta 9 - Feature: @destroy/instant instantly destroys an object, rather than queueing it for recycling. The new conf option instant_recycle controls whether or not objects set Destroy_OK (or which have Destroy_OK owners) get instantly destroyed; it defaults to 'yes'. - Feature: @list options now shows just boolean parameters, and the display format is now much neater (and in alphabetical order of the actual parameter names). A new command, @list params, shows a variety of other conf options. - Fix: left() works properly again. [3.0b8; Jeff Hulsey] - Fix: format_exits conf parameter is recognized again. [3.0] - Misc: Unused conf parameters eliminated. ----------------------------------------------------------------------------- 10/8/99: Beta 10 - Feature: edit() can now edit ANSI strings. @edit also handles ANSI in a better manner. - Fix: Conf parameter unowned_safe is back. (Oops.) [3.0b9; utoxin] - Fix: Failed movement through a global or zone exit results in "You can't go that way." rather than no output. [2.0/2.2; Markleford Friedman] - Fix: Fixed an obscure bug where, in the match confidence calculation, the "you can pass this lock" check always succeeded. [MUX] - Fix: A variety of inappropriate malloc()s have been dealt with, and XMALLOC/XFREE are now used by the mail code. [2.0/MUX] - Misc: sql_init()'s shutdown of a SQL socket calls sql_shutdown() instead of doing just doing it. - Misc: A variety of compiler warnings have been dealt with. - Went through the TinyMUSH 2.2 changes log again, looking for code that was not incorporated. Resulted in the following changes: - Fix: Never show HTML to non-HTML players. [MUX] - Fix: A variety of buffer overflow issues have been dealt with. [2.0] - Fix: Null pointer dereference in con/exit formatting. [2.2] - Misc: Some minor improvements to the queueing of output. ----------------------------------------------------------------------------- 10/11/99: Beta 11 - Feature: iter(), list(), switch(), and switchall() can now be nested (i.e., the special tokens ##, #@, and #$ are substituted in-scope). The new token '#!' gives nest level within iter() and list(), and switch() and switchall(). This changes the parsing of these tokens, which are no longer blindly substituted for, particularly with regard to escapes (for instance, '\##' now results in a literal '##'). For backwards compatibility, use parse() instead of iter() -- parse() behaves like it always has -- and use loop() instead of list(). There is no backwards-compatible function for switch(), as it's unlikely there's softcode out there that relies on a particular escaping behavior for '#$'. - Feature: Two new flag_access permission types have been implemented, 'restrict_player' makes a flag only settable on players by Wizards, but on objects of other types by mortals (FIXED, for instance). 'privileged' makes a flag only settable on players by God, but it can be set on objects of other types by non-robot players who themselves have the flag. - Fix: Backspaces and deletes on an empty line should no longer result in negative input totals. [2.0; RMG] - Fix: You can no longer give anything to an exit. [2.0; RMG] - Fix: Obvious Exits lists are no longer eaten for non-HTML players. [3.0b10; Keran] - Misc: 'th' now aliases to 'think' rather than 'throw', by default. - Misc: udefault() can take up to 12 arguments. - Misc: Perl versions of the sed scripts for database conversion now exist, and are recommended. (The vast majority of users will have perl, and the perl regular expressions are less likely to result in "false positive" conversions.) ----------------------------------------------------------------------------- 10/13/99: Beta 12 - Feature: '%r' is now a legal output delimiter. lnum() now treats its delimiter like an output delimiter (so '@@' and '%r' are both legal). sql() now treats both of its delimiters like output delimiters. - Fix: dark_sleepers conf option is displayed in reverse. [3.0b9; Tina Verras] - Fix: Structure-related data is cleared out when an object is destroyed. [3.0a8; RMG] - Fix: Absurd channel charges are no longer allowed. [MUX; RMG] - Fix: There are no spurious spaces embedded between the psuedo-HTML tags and exit names, for Pueblo display of exits. [MUX] - Fix: @emit/room/html no longer produces double output. [2.2/MUX; GrimJim] - Misc: You can no longer use addcom to join a channel multiple times. (Previously, it was permitted, but you got a warning; there didn't seem to be a good reason to ever allow it, though.) - Misc: Dealt with a few more compiler warnings, and got rid of some unnecessarily clumsy constructs. ----------------------------------------------------------------------------- 10/17/99: Beta 13 - Feature: New comsystem. - You MUST convert your old comsystem using the provided script; if you don't, you will not be able to load the comsys database. Go into your game directory, and type: cp comsys.db comsys.db.save ./convert_comsys.pl < comsys.db.save > comsys.db Make sure to keep comsys.db.save in a safe place, in case anything goes wrong. - This is a from-scratch re-implementation. There are some syntax changes, and some changes in functionality. - @cchown, @ccharge, @cset, @coflags, @cpflags, and channel objects have been replaced by the @channel command, which allows you to do administrative things to channels. All channel information is now directly associated with the channel, rather than being kept on a channel object. The information from old channel objects will be assimilated upon initial load of the database produced through the comsys conversion above. - Multiple aliases for a single channel work for real now. Each alias can be associated with a different comtitle. - If you do not have a comsys database (i.e., you are starting a game from scratch), a basic comsys database is now created, with the Public and Guests channels. - Feature: Attributes can now be retrieved with %=, where the angle-brackets are literal. In other words, '%=' is equivalent to 'v(test)' is equivalent to 'get(me/test)'. - Feature: Multi-letter variables set with setx() can now be retrieved with %_, where the angle-brackets are literal. - Misc: Use of *VARIABLE* as the object name associated with #-2 is now consistent. [3.0a3; Keran] - Misc: Corrected a typo in @quota. [2.0; RMG] - Misc: Startmush script saves a copy of the old comsys.db and mail.db files. - Misc: Minor cleanup in various places. ----------------------------------------------------------------------------- 10/20/99: Beta 14 - Feature: If conf parameter dark_actions (disabled by default) is on, objects set Dark still trigger @a-actions when they move, unless the /quiet switch is specified. - Feature: If conf parameter no_ambiguous_match (disabled by default) is on, ambiguous matches resolve to a random selection from the available matches (i.e., you will never see "I don't know which one you mean!" messages). - Feature: New flag, CONSTANT. Prevents attributes from being set/altered on an object. Can only be set by Wizards. - Feature: New conf directive, power_access. Like flag_access, but for powers. - Feature: New function, command(). Allows the execution of a variety of built-in MUSH commands through a functional means, such as @name and @parent. - Feature: New function, step(). Iterates through a list N elements at a time, passing the elements as %0, %1, etc. in a manner similar to map(). map([/],) is equivalent to step([/],,1) where 1 is the step size. - Feature: @chboot takes a /quiet switch, which doesn't suppress the "has left" channel message, but suppresses the "booted off" announcement to the channel. - Fix: The attribute list of a minimal database is handled properly, when the game is being run memory-based. [MUX; Brazil] - Fix: Creation of minimal db does not choke on vanilla comsys issues, and vice versa. [3.0a13; RMG] - Fix: columns() sanity-checks its arguments one by one. [3.0b2; RMG] - Fix: Buffer size issues with weird-size quotas fixed. [2.2; RMG] - Fix: Buffer size issues with logging some errors fixed. [2.0; RMG] - Fix: perl version of MUX db conversion works correctly. [3.0b11; overlord] - Misc: You cannot set quotas to less than zero. - Misc: Channel names can contain spaces. - Misc: Don't announce channel has joined / has left messages, unless it's an object or connected player. - Misc: The owner of a channel must be a non-robot player. Channels owned by destroyed players are chowned to the destroyer. The comsys database is checked for sanity at load time, and strangeness dealt with. - Misc: @addcommand now returns 'Command added.' - Misc: The Startmush script also looks in the $DATA directory for the comsys and mail databases. ----------------------------------------------------------------------------- 10/25/99: Beta 15 - Feature: @cron supports the / syntax, ala Vixie cron. - Feature: New conf parameter exit_calls_move (defaults to No) makes an attempt to go through an exit by typing its name, literally identical to typing 'move ', allowing an @addcommand interception. - Feature: New conf parameter move_match_more (defaults to No) makes the move command match exits like the main command parser does, i.e., it also checks global and zone exits, and in the case of multiple matches, picks a random match. - Feature: @mail/reply and @mail/replyall, based on a code contribution by Morris. A /quote switch allows optional quoting of the message being replied to. - Feature: MySQL is supported as an external database. Code contributed by Dan Evans. (Untested by the 3.0 development team, as we don't have a MySQL installation.) - Fix: Creating a minimal db, when the comsys is enabled, works again. (This time for real.) [3.0b14; RMG] - Fix: The comsys conversion script now escapes out quotes, and ensures that all aliases are for existing channels. [3.0b13; RMG] - Fix: Typo resulted in channels being chowned to God at load time. [3.0b14; utoxin] - Fix: Evaluation and other unusual locks are handled properly by the comsys load. Note that if you have eval locks in a 3.0b13 or 3.0b14 comsys, you will need to manually delete those locks (there's no way to write an automated heuristic to cope with this). [3.0b13; RMG] - Fix: Connections/disconnections on loud channels are only reported when the player is active on the channel. [3.0b13; Roloran] - Fix: Object list confounding has been fixed; among other things, this makes an eval @search with lattr() work properly. Code contributed by Robby Griffin. [2.0; RMG] - Fix: Tokens are once again correctly replaced when iter() and switch() are nested. [3.0b11] - Fix: command() handles command switches properly. [3.0b14; RMG] - Fix: pos() and lpos() no longer count ANSI sequences as part of the string characters. This enables them to interoperate properly with delete() and other functions depending on string positioning, that no longer strip ANSI characters. [3.0b8] - Fix: Flag unparsing looks at See_Hidden rather than Wizard for permission to see Dark flag on connected players. [3.0a14; Keran] - Fix: You can no longer insert arbitrary characters via url_unescape(). [2.2/MUX; RMG] - Fix: Corrected a typo that could result in an infinite loop when Radix compression is enabled. [MUX; RMG] - Fix: Prevented a memory leak when an @addcommand's attribute lacks a command string. [MUX; RMG] - Fix: Typo in Startmush script was attempting to copy the mail db to itself. [3.0b14; RMG] - Fix: The Quota, RQuota, and Semaphore attributes are visible on objects again. [3.0a4; Adam] - Misc: Valid numbers and integers can have a leading + sign. - Misc: Use character table lookup in certain parts of the parser; concept and some code derived from MUX 2.0. - Misc: Memory is not allocated for comsys connected lists unless there are players connected on the channel. - Misc: Some safe_str() calls replaced with safe_chr() calls. Calls to safe_long_str() are now simply calls to safe_str(), pending a better future heuristic. - Misc: Strict ANSI compilers objected to use of typecasts within XFREE(). ----------------------------------------------------------------------------- 10/30/99: Beta 15 patchlevel 1 - Fix: Typing a bare channel alias results in a 'No message.' error, rather than garbage. [3.0b14] - Fix: Fixed fatal error in regparse(). [3.0a4; Sorien] - Fix: @shutdown takes switches again. [3.0; jonespl] - Fix: @tel/quiet works. [MUX; Xidus] - Fix: Prevented a buffer overflow. [3.0b15] ----------------------------------------------------------------------------- 11/2/99: Beta 16 - Feature: Dynamic hashtable resizing via @hashresize. - Fix: Objects with a @daily, that also have a @startup, now cron-schedule the @daily properly. - Misc: @timecheck can take a compile-time TRACK_USER_TIME definition, to get user time used via getrusage() rather than the clock time. - Misc: Various bits of code cleanup and efficiency improvements. ----------------------------------------------------------------------------- 11/13/99: Beta 17 - Fix: Typing a bare channel alias consistently results in a 'No message.' error. [3.0b14] - Fix: Don't requeue '-' if we don't have the mailer turned on. [3.0; RMG] - Fix: ANSI terminates properly in a sequence of characters. [3.0b15; Keran] - Fix: Channels properly announce disconnects again. [3.0b15; utoxin] - Fix: Conversion of the 2.2 Control_OK flag is handled properly. [3.0; RMG] - Fix: The /delimit switch to @dolist can be used in conjunction with the /notify switch. [MUX; jonespl] - Fix: The "You see nothing special." default desc works again. [MUX; RMG] - Fix: Non-existent attributes no longer prematurely truncate the output of strings. (Bug which made 3.0b17 into 3.0b17p1.) [3.0b16; utoxin] - Misc: The resize factor used by @hashresize is now dependent upon the hash factor itself. The command table is now also resized. God is not notified of resizes, when the game is restarting. ----------------------------------------------------------------------------- 11/20/99: Beta 18 - Fix: Null store results (from CREATE and DROP) no longer cause segvs for MySQL users. [3.0b15; Dan Evans] - Fix: arr2list() no longer zaps the last character of the list being output, if a null delimiter is specified. [3.0b8] - Fix: encrypt() and decrypt() exist again. [3.0; Chimera] - Misc: Robby Griffin has joined the 3.0 development team. ----------------------------------------------------------------------------- 11/28/99: Beta 19 - Feature: examine/brief now works MUX-style again (it shows everything but the attributes). To get the 2.2-style show-owner-only, use the new /owner switch. Also, /parent can be combined with other switches. - Feature: Conf parameter opt_frequency controls how often the database is optimized. (Defaults to every dump.) - Feature: Conf parameter guest_starting_room allows guests to start in a room different than the usual player starting room. - Feature: For semaphore waits on non-Semaphore attributes, @ps shows the name of the attribute being waited upon. - Feature: New wizard-only function config() shows the value of most config parameters. - Fix: Channel transmit locks are set properly. [3.0b13; utoxin] - Fix: Global registers work reliably again; regmatch(), preservation, and some queue uses were broken on some operating systems. [3.0b16] - Fix: Memory leak in edit_string_ansi(). [3.0b10] - Fix: Lastpaged instability issues have been dealt with. [3.0b16] - Misc: A significant chunk of the page routine has been rewritten; it should be more efficient and more robust. - Misc: The HAS_FORWARDLIST flag is usually checked before trying to fetch a forwardlist. - Misc: Some minor general cleanup. ----------------------------------------------------------------------------- 5/24/2000: Beta 20 - Feature: A new script, ReportCrash, analyzes a core file and automatically emails the results to the bug-report address. - Feature: Log diversion. You may divert the logfile for a given type of logging to a separate file from the main logfile. - Feature: Readability of configuration parameters is now controlled via the config_read_access conf param, and can be listed with @list config_read_perms. config() now checks read permissions, and thus can be used by non-wizards. - Feature: Vector functions have been cleaned up and made more efficient. Vector dimensions are no longer limited. vunit() can take an output delimiter. - Feature: Boolean determination is made in a more intelligent manner. The dbref #0 is now true, and all negative dbrefs are false; lists of dbrefs are true; the string '#-1 ' is false; other non-zero non-empty strings are true. Old-style booleans can be gotten by enabling the new conf parameter booleans_oldstyle. - Feature: New function lrand() generates a delimiter-separated list of N random numbers between X and Y. - Feature: New config parameter 'autozone'. If this is off (it's on by default), newly-created objects do not get zoned to their creator's zone. - Fix: 'admin' is now recognized as a valid permission parameter. [MUX] - Fix: elock() checks if the victim, not the calling object, can Pass_Locks. [3.0b8; Xidus] - Fix: Buffer overflow fixed in center(). [3.0b16] - Fix: Buffer overflows fixed in reverse() and revwords(). [3.0] - Fix: Buffer overflow fixed in raw_broadcast(). [3.0] - Fix: setq() register checking is enforced again. [3.0b16; Meran Kal] - Fix: A problem with %q-substitutions has been fixed. [3.0; Kevlin] - Fix: " has reconnected." message is back. [3.0b8] - Fix: strtok_r() is used instead of strtok(), for re-entrancy. This fixes a problem with pagelocks and @pemit/list, among other things. [MUX] - Fix: A problem with mail flags has been corrected. [MUX; Dan Ryan] - Fix: Handle behavior correctly when the creator of an object is #-1. [3.0] - Fix: Only God can set attributes on himself. [3.0b14] - Fix: Dates of the year 2000 and later are now logged as 00, 01, etc. rather than 100, 101, etc. [2.0] - Fix: rawdump now works again (modified to work with new gdbm version). [3.0] - Misc: Newly-created Guest characters now have the same flags as the Guest-prototype object; the same flags stripped by @clone are also stripped here. - Misc: Only God can @program himself. (This is a better fusion of the 2.2 and MUX permission models.) - Misc: Floating point cleanup. ncomp() now handles floating points as well. - Misc: The page routine has been completely rewritten, fixing a variety of issues and non-ideal behaviors. Among other things, 'p =' now works as expected (equivalent to 'p '). - Misc: ansi() and translate() now do table lookups for the ANSI codes. ansi() handles invalid input more elegantly. - Misc: INLINE is used correctly now. - Misc: Miscellaneous cleanup, including clean compilation under Solaris. ----------------------------------------------------------------------------- 6/12/2000: Beta 21 - Fix: Whitespace in @cron entries is now handled properly. [3.0b8] - Fix: Logic bug in setting drop-tos. [3.0a3] - Fix: Idle time is now updated when a user enters input into a @program. [MUX] - Fix: Small problem in @list site_information. [2.2] - Fix: An off-by-one error in attribute compression has been fixed. [3.0b16] - Misc: The behavior of the main and diverted logfiles across @restart and @logrotate commands is now consistent. Old logfiles are given a timestamp; the current logfile being written to is always the "basic" name of the logfile. This allows old logfiles to be readily removed to reclaim disk space, and allows any external log-processing tools to always operate on the same filename. The 'game_log' parameter needs to be defined appropriately in netmush.conf (or equivalent). - Misc: The definition of '#!' has been changed, with the first nesting level as 0 rather than 1. This has been done for PennMUSH compatibility reasons. (In all likelihood, nobody was using it anyway, since it's not useful until the next release introduces itext(), etc.) - Misc: When an object of typing Thing has only marker flags, an underscore is used to separate the dbref from the flags, i.e., dbref #3 with marker flag 2 is now '#3_2'. - Misc: There can only be a space between the function name and the open-parens if the parser is being required to interpret parens as a function call; i.e.m 'say space (3)' is treated differently from 'say [space (3)]'. - Misc: A_USER_START is no longer used in defining the size of the command table. - Misc: More floating-point cleanup. - Misc: Startmush script now looks for 'Cleanup completed' rather than 'Startup processing complete', since cleanup is now the last stage in initialization (since 3.0b16). - Misc: Some configuration parameters have been moved from config.h to the Makefile. It should no longer be necessary to edit config.h before compiling, unless you are changing something pretty esoteric. ----------------------------------------------------------------------------- 11/4/2000: Beta 22 - Feature: The Startmush script now writes a mush.pid file, and checks it when restarting. This eliminates the need to edit Startmush if you have a non-BSDish 'ps' command on your system, or have multiple MUSHes running on the same system. - Feature: The new Logclean script handles cleanup of logfiles, included diverted logs. Startmush now calls it. - Feature: The new Archive script creates a tarball of files desirable for offsite backup. These include mush.config, the main conf file, a flatfile, comsys and mail databases, and text files that are not help, wizhelp, or mushman.txt. - Feature: @chzone behavior now matches @chown, with regards to flags and powers, including a new /nostrip switch. @chzone with no second argument unzones the object ("none" still works as well). - Feature: @destroy/instant can now be used to immediately destroy objects that are currently queued for destruction. - Feature: New conf parameter objeval_requires_control allows you to prevent wizard-owned objects from using objeval() to evaluate functions on objects with the same owner that it does not have permission to control (i.e., respects Inherit). Defaults to no. - Fix: You can escape out a colon in a $-command/^-listen match now. [2.0] - Fix: A variety of game-internal attributes are no longer copied by @clone. [2.0] - Fix: The flags and owner of an attribute used as a semaphore are now preserved. [MUX] - Fix: HTML is escaped on channels. [MUX; GrimJim] - Fix: Clearing @daily clears the cron entry. [3.0b16] - Fix: @decompile name ANSIfication is consistent. [MUX] - Fix: The parent of an object is cleared when it is destroyed. [2.0] - Fix: @mail/debug and @mail/nuke hashtable problems dealt with. [MUX] - Fix: @mail and @mail/review headers are now consistently centered. [MUX] - Fix: elock() now correctly detects lock attributes. [MUX] - Fix: The method of tracking connect times of open descriptors is now consistent with that of tracking login times. [2.0] - Fix: Invalid syntax in an alias now logs an error message. [2.0] - Fix: The GARBAGE type is now denoted with '_' rather than '-' to avoid conflict with the NOBLEED flag. [MUX] - Fix: ANSI bleeding in exits is now fixed. [MUX] - Fix: Double output in pipes for disconnected players is now fixed. [MUX; MUX 2.0] - Fix: Cleanup of conf-file parsing functions. [2.0] - Fix: Don't let the slave close its own pipe. Also check the game port when a bad file descriptor is encountered. [MUX; MUX 2.0] - Fix: Player name may not overflow a buffer at connect screen. [MUX; MUX 2.0] - Fix: case() works as documented. [MUX] - Fix: Teleport locks work as documented. [MUX] - Fix: File descriptor leak during @restart fixed. [3.0] - Fix: @poll sanitizes the value passed to it in the same way @doing does. - Fix: Function recursion and invocation limits are checked for user defined functions. [2.0; MUX 2.0] - Fix: printf() call removed from encrypt() and decrypt() functions [MUX; MUX 2.0] - Fix: encrypt() and decrypt() do proper checking for printable characters on the key value. ANSI handling fixed. [MUX; MUX 2.0] - Fix: When a mortal who controlled an zoned object examined the object, they could see incorrect attribute names. [MUX; MUX 2.0] - Fix: An optimized dump leaked a few bytes of memory. [MUX] - Fix: Misplacement of the stderr file descriptor at restart could cause database corruption. Fixed by logging to a filename specified on the command line rather than to stderr. [3.0b21; S-Edge] - Misc: 'game_log' configuration paramater removed. Log filename is now specified on the command line with '-l '. This is handled automatically by the Startmush and Logclean scripts. - Misc: Garbage objects may no longer be manipulated (examined, teleported, linked to, etc) in any way. - Misc: When you give money to someone, their ReceiveLock is now checked, instead of their UseLock. - Misc: Players set Nospoof will now see Nospoof-formatted comsys messages. Things on channels can now obtain the cause of a comsys message. - Misc: Players set FLOATING do not get floating-room messages. - Misc: Gagged players can no longer talk on channels. - Misc: Zone adisconnects are also passed the reason as %0. - Misc: Some additional length-checking is done in the mail system. - Misc: Don't call Name() twice in a row. - Misc: Flag aliases are now set more sanely. - Misc: Attempting to change a constant conf parameter is now treated as an error, instead of silently ignored. - Misc: The Build script now tee's off a Compile.log file, for easier reporting of compilation problems to the developers. - Misc: Alias attribute may no longer be directly modified; use @alias. - Misc: Logindata attribute is now viewable, but not modifiable by wizards. - Misc: Connection monitor functionality moved to WATCHER flag. New power 'watch_logins' allows a player to set the WATCHER flag on themselves or any object they own. - Misc: Global register preservation uses bcopy() rather than strcpy(). - Misc: A variety of unused code has been removed. ----------------------------------------------------------------------------- 11/21/2000: Beta 23 - Feature: Going and Unknown categories have been adding to the @stats display, and stats(). - Fix: @halt/all properly credits object owners. [2.0; Ashen-Shugar] - Fix: children() permission was incorrectly restricted to Wizards. You must now either control the object, or have See_All-equivalent privileges. [MUX; MUX 2.0] - Fix: Corrupted mail db version numbers, or empty mail databases, no longer cause a problem when trying to load mail. [MUX; MUX 2.0] - Fix: The '-' and '~' commands are no longer defined by default, if have_mailer is set to 'no' in the conf file. [3.0] - Fix: If an $-command attribute is set REGEXP, if the regexp match fails, a wild match should not be attempted. [2.2] - Fix: alphamax() and alphamin() can take the maximum number of function arguments, not just 10. [MUX] - Fix: A fatal error that occurs when the Solaris SUNWspro C compiler is used has been fixed. [3.0a13] - Fix: Recycling works properly once more. [3.0b22; Matt Totney-Roberts] - Misc: The freelist is now constructed in ascending order. - Misc: Garbage objects now have their names unparsed as *GARBAGE* rather than *ILLEGAL*. - Misc: @search/search() is more logical about how it handles garbage, and behavior is closer to how it was in 3.0b21 and previous. - Misc: Some minor code cleanup in string functions. - Misc: Scott Dorr (Myrddin) has joined the 3.0 development team. ----------------------------------------------------------------------------- 12/01/2000: TinyMUSH 3.0 gamma release - Feature: A new conf parameter, page_requires_equals, has been added (defaults to no). It requires that the page command always contain an equals sign; i.e., 'page =' to page the last person you paged, rather than 'page '. This prevents embarassing accidental mispages caused by, for instance, typo'ing a - rather than a =. - Fix: exit() works properly again. [3.0b15; S'ryon] - Fix: The \t, \r, \n, and \x characters are disallowed in locks. [2.0] - Fix: Don't close gdbm before a panic dump. [MUX] - Misc: 'news' is no longer helpfile'd by default. You should add this in your conf file instead: 'helpfile news text/news' for evaluation of percent-subs (historical MUX behavior), or 'raw_helpfile news text/news' for no evaluation of percent-subs (historical TinyMUSH 2.2 behavior). This avoids compatibility conflicts, having to escape out a ton of percent signs in news files with ASCII graphics, etc. - Misc: On login, don't print MOTD and WIZMOTD on login if they're not set, and avoid extra line feeds from mail check. - Misc: 'version' for wizards reports build information. - Misc: ReportCrash reports more information. - Misc: Archive script dumps file with a .tar.gz extension, for clear user identification of file type. - Misc: 'help patchlevel' returns changes and conversion notes for 3.0. - Misc: Some minor cleanup. =============================================================================