ChangeLog, TinyMUSH 2.2
===========================================================================
11/17/96: TinyMUSH 2.2.3
- A DB RELOAD IS REQUIRED BY THIS CODE RELEASE. Updated the db version
stuff to version 10. (config.h, dbconvert.c, db_rw.c, mushdb.h)
- Folded in Andrew Molitor's patch to alphabetize and binary-search
on attributes at the cache level, fix the chunkfile growth, support
IN_MEM_COMPRESSION compile-time option for radix compression, and
write out names instead of numbers in attrib locks. (command.c, db.c,
db_rw.c, dbconvert.c, game.c, mushdb.h, udb_ocache.c, udb_ochunk.c,
autoconf.h.in)
- Folded in Cookie's improved, much faster string-handling routines.
(alloc.c, alloc.h, command.c, cque.c, create.c, db.c, eval.c,
externs.h, file_c.c, flags.c, functions.c, game.c, log.c, look.c,
netcommon.c, player_c.c, speech.c, stringutil.c, unparse.c, walkdb.c)
- "Lag checking", logging a warning if the real time (not CPU time)
for execution of a command exceeds the config parameter lag_maximum.
Can be turned off by the compile-time NO_LAG_CHECK option. (command.c,
conf.c, config.h, cque.c, mudconf.h, netcommon.c)
- You can now lock out Guests from certain sites, via the guest_site
configuration directive. (conf.c, mudconf.h, netcommon.c)
- The BOUNCE flag acts like the equivalent of a @listen of '*' with no
@ahear. Useful for letting players be transparent to noise without
needing to enable player_listen. (flags.c, flags.h, game.c)
- PARANOID_EMIT compile-time option prevents @pemit and @emit from being
used on non-Affected targets. This has been previously impossible to
prevent using the conf options. (config.h, speech.c)
- The new function lastcreate() and the NewObjs attribute keep track of
last-created objects for a given thing. (attrs.h, db.c, functions.c,
object.c)
- Command matches on objects can now be done unparsed, through the use
of the AF_NOEVAL attribute flag. This allows editors that don't strip
percent-signs, etc. (attrs.h, command.c, command.h, cque.c, externs.h,
functions.c, game.c, look.c, netcommon.c)
- Pueblo patch integration; PUEBLO_SUPPORT compile-time option. This is
a multimedia MUD client; see http://www.chaco.com/pueblo for details.
(Makefile.in, attrs.h, command.c, conf.c, config.h, db.c, externs.h,
file_c.c, file_c.h, flags.c, flags.h, functions.c, game.c, interface.h,
look.c, move.c, mudconf.h, netcommon.c, predicates.c, speech.c,
stringutil.c)
- COMMA_IN_SAY compile-time attribute controls whether or not a comma is
inserted or not, i.e., 'You say, "Hi."' vs. 'You say "Hi."' (config.h,
speech.c)
- Resetting of buffer pools is done at checkpoint time. Extra consistency
checking and pool_reset code borrowed from MUX. (alloc.c, timer.c)
- NOSPOOF is now only wiz-visible, though anyone can set it; this
attempts to prevent twits from excluding NOSPOOF people in mass-@pemit
spams. STOP is now visible to everyone, but only wizards can set it.
(flags.c)
- Function invocation limits are checked directly by the list-based
functions and foreach(), saving unnecssary extra passes through
exec() in the parser, on overlofws. (functions.c)
- Seconds connected now noted in log of disconnect. (bsd.c)
- Default vattr hashtable size is now 16,384. @list hash also shows the
size of the table. (vattr.c, vattr.h, Makefile.in)
- Changed default object cache size to 60x10 from 85x15. (udb_defs.h)
- Changed order of defines for configuration. (config.h)
- mix() no longer eats the beginning of its output, if that output is
NULL; its behavior is now consistent with map(). (functions.c)
- Fixed TLI socket close problems. (bsd.c)
- Properly null-terminated @ps/long output. (cque.c)
- A machinecost of 0 no longer crashes the MUSH. (cque.c)
- The ROBOT flag cannot be reset on players. (flags.c)
- Fixed memory leak in sortby(). (functions.c)
- list_check returns number of matches correctly. (game.c)
- Fixed buffer-overrun problem in queue_write(). (netcommon.c)
- Players over their paylimit don't get a paycheck. (player.c)
- Fixed '@set foo=bar:_baz/boom' bug (it was stuffing the contents of
baz's BOOM into foo's BOOM, completely ignoring BAR). (set.c)
- Fixed problem with attribute names of extactly 32 characters. Patch
based on MUX. (vattr.c)
- Miscellaneous cleanup to remove compile-time warnings and small bugs
done by Moonchilde. (command.c, cque.c, db_rw.c, functions.c, look.c,
netcommon.c, udb_achunk.c, udb_ochunk.c)
- Fixed some OS-specific problems:
* Sys V variants: Andrew Molitor's filters now work.
* HP-UX: char promoting to int in formal prototypes fixed. (externs.h)
* Linux: myndbm now compiles properly. (myndbm.h)
* Linux: MAXINT in delete() no longer causes a crash. (functions.c)
- Copyright notice updated to new TinyMUD copyright. (copyright.h)
===========================================================================
2/14/96: TinyMUSH 2.2.2
- Implemented the wiz-settable STOP flag. Halts further $command
searching if one is matched on an object set STOP. Order something
like a master room's contents by priority to get maximum use out of
this. (command.c, externs.h, flags.c, flags.h, game.c)
- Implemented the COMMANDS flag and require_cmds_flag conf parameter
(defaults to yes). If on, only COMMANDS-set objects will be searched
for $commands. Some automatic db conversion is provided (to DB
version 9), but it doesn't handle parents cleverly. (config.h,
db_rw.c, dbconvert.c, flags.c, flags.h, game.c, mushdb.h, command.c,
conf.c, mudconf.h)
- Implemented @parent/zone, a secondary local master room check.
Controlled by conf parameter parent_zones (defaults to yes).
(command.c, conf.c, create.c, externs.h, look.c, mudconf.h, mushdb.h)
- New functions: andflags(), orflags(), left(), right(), lpos(), objmem(),
xcon(). (functions.c)
- @enable/@disable now logged as CFG/GLOBAL. (wiz.c)
- god_monitoring global parameter enables dumping commands to the
screen (basically LOG_ALL_COMMANDS without spamming the disk).
- Memory leak fixed in foreach(). (functions.c)
- lattr() is back to its more logical 2.0.10p5 behavior. Functions which
return lists should return empty lists on errors, rather than spewing
goop into the list buffer. (functions.c)
- map() without a list returns an empty string, rather than trying to
call the mapping function with nothing. (functions.c)
- udefault() didn't evaluate the arguments passed to it before calling
the U-function. This has been fixed. (functions.c)
- Checks to make sure atol() does not gag on atr_get_raw() passing back
a null pointer. From Ambar. (player_c.c)
- Updated alias.conf with new flag aliases and some new bad_names.
- Patchlevel information moved from 'news' to 'help', so that it gets
installed automatically when people update their server help.
- 'help commands' is now 'help command list' (to avoid conflicting
with help for the COMMANDS flag). 'help help' fixed to reflect this.
- 'help command evaluation2' lists the exact order of matching.
- 'help secure()' notes that the function stomps on commas.
- 'help @tel' now accurately reflects what Tport locks actually do.
- Portability modifications for BSD/386 and Linux. In particular, it
should now compile cleanly on both; the Linux SIGFPE problem is
also fixed, as is the BSD/386 db-eating problem.
- Platforms tested (clean compile, start, shutdown, restart):
Irix 5.3, SunOS 4.1.3_U1, Solaris 5.4, BSD/386 1.1, Linux 1.2.11
===========================================================================
6/4/95: TinyMUSH 2.2.1
- Implemented local master rooms, the ZONE flag, and the local_master_rooms
config parameter. (command.c, conf.c, flags.c, flags.h, mudconf.h, mushdb.h)
- Implemented @dolist/notify. (command.c, walkdb.c, externs.h)
- Implemented building_limit conf parameter, to limit total number of
objects in the database. (object.c, conf.c, mudconf.h)
- @list options lists output_limit, local_master_rooms and building_limit
status. (command.c)
- matchall() with no match returns the empty string, rather than a 0.
In general, list-based functions should return empty strings rather
than garbage values, when errors are encountered. This was a programming
oversight. (functions.c)
- shuffle() and squish() now properly return a null string when called
with no args (rather than a number-of-args error). (functions.c)
- sortby()'s generic u_comp() function checks to make sure function
limits have not been exceeded (preventing unnecessary extremely
expensive calls to exec(), and long freezes). (functions.c)
- min() and max() no longer chop off fractional parts of numbers.
Talek's patch for this modified to retain permissibility of passing
the function only one arg. (functions.c)
- add(), mul(), and(), or(), xor(), min(), max() no longer keep the got_one
temporary variable around. From Talek. (functions.c)
- not() now uses atoi() rather than xlate(), for behavior consistent with
the other boolean functions. Note that this means it no longer regards
dbrefs as "true". (functions.c)
- Fixed braino of && to || in dbnum(). From Talek. (functions.c)
- Mortals can now @destroy exits they're carrying. (create.c)
- Put in the mushhacks patch for fixing the site reg crash problem on the
Alpha. This is an unverified patch. (conf.c, externs.h, mudconf.h)
- Wrote two utility functions, save_global_regs() and restore_global_regs(),
whose purpose in life is to protect global registers from munging.
(externs.h, eval.c)
- ulocal() now uses the utility functions. (functions.c)
- did_it() now restores the original value of the global registers after
the @-attribute and @o-attribute have been evaluated (i.e., before
the action @a-attribute is done). (predicates.c)
- The state of the global registers is preserved for @filter, @prefix,
and related attributes. (game.c)
- eval_boolexp()'s eval-lock evaluation preserves the state of the global
registers. (boolexp.c)
- Modified the Startmush script to give more information as the pre-game
file-shuffling is done. Added Talek's patch to automatically start a
new db with -s if there are no existing old db files, and to do a bit
of magic to grab the PID and tail -f the log until startup processing
is complete.
- Fixed and updated the helptext for 'help me'.
- Updated the helptext on @aconnect/@adisconnect for global conns.
- Updated "help credits".
- Verified various fixes that were made in 2.0.10p6:
* get(), etc. can retrieve all public attributes except for @desc,
regardless of the status of read_remote_desc.
* home() returns origin of exits.
* @list options correctly reports configuration of matching commands.
* @trigger takes a /quiet switch.
* Rejected 2.0.10p6 "fix" to lattr() which returns #-1 NO MATCH instead
of an empty string. (NOTE: This is untrue. It slipped in somehow.
Error corrected in 2.2.2 release. -Amberyl, 2/14/96)
===========================================================================
4/1/95: TinyMUSH 2.2 Initial Public Release
- Began with TinyMUSH 2.0.10p5 as baseline code.
- Fixed all known bugs/problems in the baseline code, including:
* Memory leaks. Also, it is no longer assumed that malloc() never
returns NULL.
* Matching is done consistently and intelligently (more or less).
* '#' no longer matches '#0'.
* @destroy matching bug fixed, and permissions checked properly.
* @destroy cannot blast #0; it is always treated as a special object.
* Set action of SIGFPE to SIG_IGN for linux, which spuriously generates
the signal without an option to turn it off.
* @forwardlists are loaded at startup.
* cache_reset() is called for every item, during startup.
* cache_reset() is called periodically, when loading player names.
* cache_trim config parameter removed.
* Wildcards can no longer be used to overflow buffers.
* @alias makes sure that player name is valid.
* @clone names cannot be non-NULL and the name must be valid.
* elock() requires nearby or control of just one object, not two.
* insert() can append to a list.
* @function does not crash game when attr is nonexistent.
* A /switch on an @attr command (@fail, etc.) does not crash game.
* STICKY droptos properly check connected players.
* Overflowing connect buffer does not cause game to crash.
* Fixed typo of 0 to o in See_attr() macro.
* Fixed lack of terminating null on make_ulist() (used by lwho()).
* Fixed a @sweep bug which was causing Audible exits and parent objects
not to show on the @sweep.
* @doing cannot contain tabs or CRs -- converted to spaces. Also fixed
an off-by-one counting error on characters dropped.
* Removed obsolete memory-statistics stuff.
* Fixed timer alarm()s to generate appropriate behavior on all operating
systems (previous correct behavior was due to an ancient bug in the code
which caused things to always default to an error condition that
generated guaranteed-good behavior).
* Two small syntax things corrected (=- to -=).
* Fixed helptext error involving checking of $commands on parent objects.
* Noted in help.txt that KEY affects all locks, not just the default one.
* MYOPIC now works properly for wizards.
- Many things were fixed in configure; some compatibility changes were made.
* db.h is now mushdb.h, in order to appease FreeBSD.
* Support for setdtablesize() and get_process_stats() on Sequent.
* Support for the rusage syscall() braindamage on HP-UX.
- New features were added, and some other things twiddled.
* Quotas can be managed by object type.
* There is support for multiple guest characters.
* There is support for global aconnects and adisconnects.
* Added logging of command count, bytes input, and bytes output, when
player disconnects.
* Note is written to log after startup processing is completed (since
there is often a substantial delay between the db load completing and
the game actually being "up").
* @shutdown/abort causes game to coredump via abort().
* @dbck can fix damage of the 'Next(<obj>) == <obj>' type.
* @search reports a count of the objects found, broken down by type.
* @pemit to disconnected/pagelocked players now does not return an error
message.
* @pemit/list and @pemit/list/contents sends a message to a list.
* @decompile takes wildcards.
* 'examine' shows more attribute flags. More individual attribute flags
are now settable.
* Added "audible" notation to @sweep command.
* Idle/Reject/Away messages now take the paging player as the enactor,
rather than the target player. This enables personalized messages for
each player.
* Fixed @list options to reorganize some of the parameters and remove
redundant or obsolete stuff. Also added some previously unlisted stuff,
like typed quotas and function limits.
* Reorganized @list process, and removed bits of obsolete code.
- Functions were modified.
* and() and or() stop evaluating when a conclusion is reached (this
isn't user-visible, unless there are inline side-effect functions
like setq(), and is done merely for internal speed).
* hasflag() can now check attribute flags.
* iter() and parse() evaluate their delimiter args.
* lnum() can now take a range argument, and a separator.
* locate() can now taken an 'X' parameter (to force an ambiguous match).
- Functions were added.
* %q-substitution for r()
* %c/v(c) substitution for 'last command'.
* default(), edefault(), udefault()
* findable(), hasattr(), isword(), visible()
* elements(), grab(), matchall()
* last(), mix(), munge(), scramble(), shuffle(), sortby()
* objeval(), ports(), ulocal()
* foreach(), squish()
- Configuration options were added and modified, and other cleanup was done.
* Made wizard_obeys_linklock a config option (default is "no").
* Default queue idle and queue active chunks changed to 10/10 (from 3/0).
* Default object cache size changed to 85x15 (from 129x10).
* New config parameters starting_room_quota, starting_exit_quota,
starting_thing_quota, starting_player_quota, typed_quotas (defaults
to "no") added to support Typed Quotas.
* New config parameter use_global_aconn (default is "yes").
* Config parameter 'guest_char_num' replaced by 'guests'.
* Floating-point arithmetic is now an #ifdef FLOATING_POINTS in config.h
* Hashtable sizes were upped to 512 for players, 256 for functions, and
512 for commands.
* The code was split up into multiple directories.
* One consistent indentation style is in place (see misc/indent.pro)
* New news.txt file, which says some general things about 2.2 and MUSH,
adds a user-visible changes section, and adds a long-needed "how to
write a news file" entry. Also modified motd.txt for the
"### end of messages ###" client-stop-gagging-welcome-screen mark.
===========================================================================