Notes: This is the README file for TinyMUSH 3. Please look at the following files for details on specific aspects of TinyMUSH 3. INSTALL Installation instructions CONVERT.MUX Converting from TinyMUX CONVERT.TINY22 Converting from TinyMUSH 2.2 FAQ Frequently-asked questions CHANGES TinyMUSH 3 general changelog BETA TinyMUSH 3 beta changelog CHANGES.TINY20 The old CHANGES file from TinyMUSH 2.0.10p6 CHANGES.TINY22 The old CHANGES file from TinyMUSH 2.2.5 CHANGES.MUX The old CHANGES file from TinyMUX 1.6 MODULES Developer information on creating modules README.TOOLS Additional programs in src/tools CREDITS Credits and thanks ---------------------------------------------------------------------------- TinyMUSH 3 began as a project to fuse the TinyMUSH 2.2 and TinyMUX codebases, in an effort to create a best-of-breed server that combined the best features and enhancements of both, and then built additional innovations and increased stability on top of that merged codebase. TinyMUSH 3.0 is not a rewrite; we wanted to maintain close to 100% backwards compatibility, and the sheer scope of effort that would have been necessary in order to create a new server from scratch was beyond our available time resources. However, every line of the code has been gone through in the process of creating TinyMUSH 3.0. A large number of bugs have been fixed, portions have been rewritten to be cleaner and more efficient, and a slew of new features have been added. TinyMUSH 3.1 and beyond will extend this further, providing a solidly stable server, improved efficiency, and many feature enhancements. The initial TinyMUSH 3.0 release was jointly developed by David Passmore and Lydia Leong; Robby Griffin joined the team with the release of 3.0 beta 18, and Scott Dorr joined with the release of 3.0 beta 23, and the team expects to continue to maintain TinyMUSH 3 into the forseeable future. Though we will continue to welcome contributions from the MUSH community, we expect to remain the primary developers. We believe that this will be a major platform of choice for MUSH users in the future, and we highly encourage existing TinyMUSH 2.2 and TinyMUX 1.x users to upgrade. We believe that server stability for TinyMUSH 3.0 to be excellent (no reported crash problems since the 3.0p2 release in January 2001), and we expect that TinyMUSH 3.1 stability to be at least as good. Server stability for beta versions should generally be good, but, of course, may not be as stable as full-fledged release versions. In general, TinyMUSH 3 should be more stable than any of its predecessor servers. Problems or issues should certainly be reported to the developers, and we will do our best to ensure that they're fixed promptly.
Changes: This document details changes for TinyMUSH 3 "mainline" releases, as well as bugfix updates issued against those mainline releases. For changes between beta versions, consult the BETA document. ============================================================================= TinyMUSH 3.1 Changes ============================================================================= TinyMUSH 3.1 beta 1 was released on May 8th, 2002. The "full", gamma release of TinyMUSH 3.1 is dated June 21st, 2004. ----------------------------------------------------------------------------- PATCHES SINCE THE 3.1 RELEASE 3.1 Patchlevel 6 -- January 12th, 2009 - Enhancement: A "reply" command allows you to reply to a page, including being able to reply to the whole group of people paged along with you. - Enhancement: Property directories (propdirs) offer the ability to inherit attributes from multiple objects. If an object's parent chain does not contain an attribute, the object's @propdir list is searched for that attribute. - A new special @hook, internalgoto, has been added. This offers the ability to execute a hook on any type of movement, regardless of the reason, with the before-hook executed before leaving a location, and the after-hook executed when entering a location. - Enhancement: The new /private switch to @function makes the register environment of the called function private, ala uprivate() -- i.e., no registers are passed in, and any changes made to registers by the function are discarded. - Enhancement: The new /private switch to @hook makes the register environment of the called hook private. - Enhancement: PennMUSH-style #lamba anonymous functions are supported, allowing functions like map() to take a string to execute rather than requiring it to reside on an attribute. - Enhancement: The iter() family has been extended -- iter2(), list2(), whentrue2(), whenfalse2(), itext2() -- to allow a second list to be simultaneously processed via the #+ string-token substitution. - Enhancement: New function ifzero(), the reverse of nonzero(). - Enhancement: New function lregs() lists non-empty registers. - Enhancement: If speak()'s first argument (the speaker) contains an '&', it's used to specify a speaker name. - Enhancement: @adisconnect is now passed all the statistics of the session info, via the stack. - Bugfix: In the ifelse() family, trailing space is no longer accidentally eaten. - Maintenance: Updated copyright to 2009. 3.1 Patchlevel 5 -- January 27th, 2008 - Enhancement: The new conf parameter local_master_parents allows the parents of objects in ZONE-set parent rooms to be scanned for $commands. - Enhancement: New Trace attribute flag, allows tracing of just a single function. - Enhancement: IDLE psuedo-command for idle keepalive, ala PennMUSH. - Enhancement: @colormap allows a player to remap what colors he sees. - Enhancement: @end (@break / @assert) ala PennMUSH/MUX -- terminate action list and execute default based on a condition. - Enhancement: New functions private() and uprivate(), which sandbox the global registers for an evaluation. - Enhancement: New function lreplace(), a multi-element replace. - Enhancement: New functions usetrue() and usefalse() use conditional expression if true/false, and default otherwise. - Enhancement: New functions iftrue() and iffalse() act like ifelse() and its boolean inverse, but substitute the condition in the resulting evaluations as #$ (the switch token). - Enhancement: New function qvars() reads list elements into local registers, like xvars() does with variables. - Enhancement: New function isort() sorts a list and returns its indices. - Enhancement: extract() can take an output delimiter. - Enhancement: ports() can take an empty argument, returning all ports; permissions made configurable rather than hardcoded. - Enhancement: push() with an empty argument now pushes an empty string onto the stack, rather than returning an error. - Enhancement: lor(), etc. return 0 on an empty argument, rather than an error. - Enhancement: @@() can have embedded commas. - Enhancement: %i0 through %i9 are equivalent to itext(sub(ilev(),<number>)) and are identical to their PennMUSH counterparts, enabling the common case of wanting to get the substitution from N levels up. %i-0 through %i-9 are equivalent to itext(<number>). - Enhancement: PennMUSH-style %+ substitution (returns number of arguments on the stack). - Enhancement: New conf parameter mud_shortname is used in logging, rather than mud_name, if it's set. Useful for shortening very long game names. - Bugfix: lunion() etc. correctly detect sort type when first argument is blank. [3.1a7] - Bugfix: writable() works on attributes that didn't previously exist. [3.1a8] - Bugfix: Don't leak memory on speak(). [3.1b3] - Bugfix: Don't match an empty string to an exit (i.e., no foo;;bar). [2.0] - Bugfix: @femit/spoof gives output properly. [3.1p2] - Bugfix: Players who are hidden (Dark) can now have their names partial-matched for page, etc. by players who can see hidden. [MUX] - Bugfix: All site flags must be kept and checked (so, for instance, you can restrict both creates and guests). [3.0b8] - Bugfix: Global registers must be cleared when doing notification. [2.0] - Bugfix: Bad @cron syntax can no longer cause a loop. [3.0b8] - Bugfix: Message to/use of an emptied comsys channel can no longer cause a crash. [3.0b14] - Bugfix: flag_access must have a permission. [2.0; Brazil] - Maintenance: Updated GDBM's AutoConf to version 2.59. - Maintenance: Updated GDBM's LibTools to version 1.5.22. - Maintenance: Removed unused variables related to @program. Per Brazil. - Maintenance: Updated copyright to 2008. - Compatibility: Enables TinyMUSH to read the escapes of cr/lf add to the TinyMUX flatfile. Per Brazil. 3.1 Patchlevel 4 -- December 19th, 2006 - Fixed Always clear @prog data on logout - Fixed tools (src/tools). Add an install tag to the tools makefile. - Update LibTools to version 1.5.22. - Update AutoConf to version 2.59. - Fixed function logf() in udb_* conflict with build-in function logf(), rename the function to warning(). - Remove unused port-concentrator code. - Automated build of TinyGDBM within ./configure. - Updated the build process a bit to keep in line with autoconf standards. 3.1 Patchlevel 3 - Fixed Update script to work with Sourceforge's new web services. - Bugfix for integer overflow in PCRE repeat counts. - Removed stale code in add_player_name. - Refactored the logged-out commands code, removing some unreachable code in do_command, clarifying how logged-out commands are handled, and fixing a reference to freed memory. - Improved performance of scramble() and reverse() on strings with less ANSI color. - Avoided unnecessary attribute scans in Hearer(). - Removed duplicated code in handle_ears(). - Minor nitpicks in sweep_check() and fh_hear_bit(). - Renamed CLONE_PARENT to avoid conflict with Linux 2.4 sched.h. Patch from Brazil. [2.0] - Fixed potential null-dereference in player cache -- pcache_find() no longer returns null and all callers must use Good_owner() first. Reported by Brazil. [2.0] - Fixed double-evaluation of arguments in columns(). [MUX; Brazil] - Fixed lack of evaluation of delimiter arguments in list() and loop(). [3.0] 3.1 Patchlevel 2 - Startmush now accept start/stop/restart/reboot switches. You can also pass the name of the config file you want to use instead of the default 'mush.config' one. - Removed hardcoded binaries path from the engine, a new command line switch ( -b binpath ) new feed the engine with the correct value. The engine can now run its binaries from any directory, not just ./bin/. (slave path was hardcoded.) - Removed hardcoded textfiles path from the engine, a new command line switch ( -t textpath ) now feed the engine with the correct value. This eliminate the need of adding every textfile in the configfile if someone want to change the game's text directory. - The engine is now able to find the data directory and names of the db/crash files from the command line. ( -d datapath, -g gdbmfile and -k crashfile) The configuration parameters 'database_home', 'crash_database' and 'gdbm_database' are still avalable for backward compatibility. - A new helper (logwatch) replace the 'tail'/'awk' script used to print the first lines of the log during statup. this solve the problem of having a zombie tail command left running when awk cut its pipe. - Added EXIT, ROOMS and VEHICLE topics in qhelp.txt. - Fixed a memory leak in sql_query function where result was stored but never freed so whenever a query returns an empty result it leaks a mysql result structure. [3.0; Dan Ryan] - Added /spoof switch for @fsay/@fpose/@femit. - Modified the documentation to properly reference @speechformat instead of @speechmod [3.1b7; Jared Robertson] - Changed the wizhelp topic text of LOGGING and INHERITANCE to "This topic hasn't been written yet." [MUX; Jared Robertson] - Added a REGISTRATION wizhelp topic (was referenced by @PCREATE and REGISTER_SITE) [MUX; Jared Robertson] 3.1 Patchlevel 1 -- August 11th, 2004 - Fixed a bug in dbconvert where the cache wasn't flushed before closing the database, creating an incomplete database. [3.1p0]
Copyright © 2009 Geeknet, Inc. All rights reserved. Terms of Use