Skip to content
Go to file
Cannot retrieve contributors at this time
186 lines (164 sloc) 14.7 KB
This is the most current changes file for PennMUSH. Please look it over; each version contains new things which might significantly affect the function of your server. Changes are reported in reverse chronological order (most recent first)
[SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos), also responsible for most unattributed changes.
[GM] is Greg Millam, a PennMUSH developer (aka Walker)
[MG] is Mike Griffiths, a PennMUSH developer (aka Talvo)
[TK] is Tim Krajcar, a PennMUSH developer (aka Rince)
[3] refers to code by (or inspired by) TinyMUSH 3.0
[MUX] refers to code by (or inspired by) TinyMUX 2.x
[Rhost] refers to code by (or inspired by) RhostMUSH
Numbers next to the developer credit refer to Github issue numbers.
Version 1.8.6 patchlevel 2 Dec 19, 2017
* Fix compilation errors with OpenSSL 1.1. [SW]
* Fix overflow bug in mapsql(). [MG]
* elements() would very rarely give an extra delimiter. Reported by Ashen-Shugar. [1108-MG]
* Missing null termination in 'buy' fixed by CLDawes. [1128]
* Fix an off-by-one error in switch handling code that could cause a crash on startup. [SW]
* Fix an issue with table() not fitting maximum number of columns in a line. Reported by Degraine. [1119-SW].
* Fix an issue where writes to a socket sometimes shut down the connection needlessly. [1136-SW]
* Disallow '=' to be used in passwords. Causes problems when changing passwords later. Reported by Volund, PR by Qon.
Major changes:
* Supports client charset negotiation of UTF-8. This means the mush can send and recieve UTF-8, but still uses latin-1 internally. Unicode characters that aren't part of latin-1 are not supported. Yet. [SW]
Minor changes:
* New @lock/chown controls who can @chown a CHOWN_OK object. Suggested by Frakir. [1127-MG]
* The 'buy' command now pays the vendor, rather than the money disappearing into a black hole. Suggested by moniker, patch by CLDawes. [1128]
* Help changes by Xperta, Trinsec, Elwyndas and others. [MG]
* MySQL Stored Procedures should now work without causing 'Out of sync' errors. Patch by Mercutio. [1100]
* Make log rotation more robust. [SW]
* fraction() now takes a second arg; fraction(1.5,true) returns "1 1/2", rather than "3/2". [MG]
* hasattrval() now returns 0 for attributes containing a single space when the empty_attrs config option is false. [MG]
* fold() now passes the number of times <attr> has been called as %2. Suggested by Shaenyl. [MG]
* Attempt to speed up database saves and loads a bit. [SW]
* Improvements to SSL certificate checking. The ssl_ca_file config option should now be set to /etc/ssl/certs/ca-certificates.crt unless you've customized it, and the new ssl_ca_dir option to /etc/ssl/certs. [SW]
* Use the much lighter weight and higher quality PCG random number generator. [SW]
* Use a better seed for the RNG on Windows. [SW]
* uses a better way to generate temporary files. [SW]
* Use clang-format instead of GNU indent to format source code. [SW]
* Use poll(2) instead of select(2) for the main game event loop. [SW]
* Slave procceses use prctl(2) on Linux to be notified of the mush exiting instead of checking periodically. [SW]
Version 1.8.6 patchlevel 1 Mar 29, 2017
Major changes:
* Added some aliases for the MUX com system, including the addcom, delcom, comtitle, comlist and @clist commands. Enabled in mush.cnf. See 'help muxcomsys' for details. Requested by many people over the years. [MG]
* Move all remaining build-time settings out of options.h into mush.cnf and remove options.h. [SW]
* rjust(foobar,3,,1) previously returned "bar"; it now returns "foo", like the analogous functions on MUX and Rhost do. We won't be changing it again. Honest. [1092-MG]
* @clone'ing an old exit which had the alias built into the name incorrectly created a clone with no aliases. Reported by Qon. [MG]
* Fix compile errors in portmsg.c. Reported by mcgiwer. [SW]
* Disable SSLv2 support. [SW]
* Fixed a memory leak in @listens. [MG]
* Minor align() fixes when merging multiple columns. [MG]
* repeat() would sometimes fill the buffer with very large numbers of repetitions. Reported by Ashen-Shugar. [MG]
* SOCKET`CONNECT event caused a crash because cque expected a player to always be enactor. [GM]
* 'help entries' was broken. Reported by Viila@M*U*S*H. [MG]
* @if incorrectly evaluated both its action list arguments prior to queueing one of them. Reported by Qon and Ashen-Shugar. [1076-MG]
* The @mailquota standard attribute was missing from some dbs, for some unknown reason. It will be automatically be added back in when you first update to this version; if you aren't using the @mail system, you can @attribute/delete it once and it'll stay gone. Reported by Kimojuno. [1077-MG]
* Messages - such as an exit's own @osuccess - could be propagated through an audible exit when they shouldn't be. [1081-MG]
* Fix a crash if a particular file descriptor is -1. [SW]
* Fix a potential crash in @stats/tables [SW]
* controls(<obj>, <victim>/<attr>) would return 1 even if <obj> didn't control <victim>. [MG]
* Although json(object) would correctly return {}, an empty JSON object, other JSON functions would throw an error and say it was invalid. [MG]
* Fixed channel_send() incorrectly setting speaker to NOTHING for non-spoofed chat messages when adding text to the channel buffer. PR by Qon.
* extract(<list>) incorrectly returned the 2nd element of <list>, instead of the 1st. Reported by Jules@M*U*S*H. [MG]
* Several places which checked for unsigned integers didn't ignore Tiny_Math, but should have. Reported by Kitten, debugged by Ashen-Shugar. [MG]
* Paranoid dumps didn't use the latest db flags. [SW]
* Although they can't be destroyed directly, it was still possible to destroy some important objects like the player_start room by nuking their owner, with nasty consequences. Reported by Sistene@M*U*S*H. [MG]
* regrab(), reglmatch() and related functions didn't work if the <regexp> contained ansi. From a report by Riorgan@M*U*S*H. [MG]
Minor changes:
* PLAYER`CREATE event now passes the registered email if the player was created using 'register' at the login screen. PR by Qon.
* moniker() now returns accented names, for Rhost/MUX compatability. Reported by Qon. [1063-MG]
* Help fixes by Qon and others. [MG]
* The makefile warns if gperf is not installed but needed to regenerate some source files. Based on an idea by [TK].
* Work torwards supporting Windows via MSYS2. [SW]
* New option for align(), # stops a colsep being added after a column. Suggested by Ashen-Shugar. [MG]
* If you own an object and are in its DEBUGFORWARDLIST, you'll now only get the debug output once. Suggested by Qon. [1059-MG]
* Tweaks to 'help <wildcard>'s error messages, and the help for said syntax. Suggested by Wiggles. [1084-MG]
* The "monikers" config option now takes a list of words, rather than a bitflag - less confusing and more user-friendly. [1089-MG]
* @chownall now takes /things, /rooms and /exits switches, to limit the types of objects chowned. [MG,Rhost]
* @chown <obj>/<attr>=<owner> acts as an alias for @atrchown, for Rhost compatability. [MG]
* @grep/parent checks inherited attributes too. [MG,Rhost]
* Penn now understands XTERM when reading raw ansi tags. It essentially never does this, though. Requested by spork. [975-MG]
* Players that are See_All, Royaty or Wizard can see Hidden-connect messages on any channel. PR by Qon.
* Players hidden on a channel with @chan/hide will not show connect messages to players unless they are see_all or roy/wiz. PR by Qon.
* Hidden-connects/disconnects only show on @chan/recall and crecall() if you are see_all, roy or wizard, except for your own messages. PR by Qon.
* DARK-connect/disconnect/etc messages are no longer announced over channels. Dark and Hidden are two different things. PR by Qon.
* The Pueblo_Send power has been renamed Send_OOB, to reflect its new use for other, non-Pueblo-related, out of band messages. Pueblo_Send remains as an alias. (The hardcode macro checking for the power, Can_Pueblo_Send, has also changed to Can_Send_OOB.) [1041-MG]
* Mortals can now use oob() on themselves, and those with the Send_OOB power can use it to send to anyone. Suggested by Qon and Sketch. [1041-MG]
* Remove a duplicate message when @chzone'ing a priv'd player. [MG]
* @hooks now always have named registers for left-side args, even if the command isn't eqsplit (see 'help @hook7'). [MG]
* Make SHA-0 dependency optional to support OpenSSL 1.1. [SW]
* Change the default hash for player passwords to SHA-512 from SHA-1. [SW]
* The default @poll message, "Doing", can now be translated. [MG]
* Clean up some of the shell scripts used in the build and startup processes. [SW]
* Added setsymdiff() [SW]
* Added randextract(), a more powerful version of randword(). [MG,Rhost]
* randword() is now more ansi-aware. [MG]
* pgrep(), like grep() but also checks parents. [MG,Rhost]
* Added json_query(), for getting various information about JSON data. [MG]
* A number of functions are now more ANSI-friendly, including first(), last(), rest(), fold(), filter(), grab(). Report by Qon. [1048-MG]
* splice() no longer strips ANSI. [1045-MG]
* Improve documentation for required packages in some Linux distributions.
* Document how to get Penn running on the Windows 10 Bash For Ubuntu On Windows project.
* safe_atr_value() now takes a second arg, for memory tracking (mem_check), and the returned value must be freed with mush_free() instead of just free(). [MG]
* ChanTitle(), CHAN_TITLE_LEN, and the "title" member of the channel struct - used for @channel/desc - have been renamed to ChanDesc, CHAN_DESC_LEN and "desc", respectively. Now I won't confuse them as being relevant with @channel/title. Every. Single. Time. [MG]
* etime_to_secs() now takes a third, boolean argument, default_minutes. If true, purely numerical values are treated as a number of minutes, not seconds. This allows using the function for parsing time-related config options instead of having a separate implimentation. [MG]
Version 1.8.6 patchlevel 0 Dec 25, 2015
NOTE: When updating from an earlier version of PennMUSH, you'll need to run 'make update' and './config.status' in the toplevel PennMUSH directory prior to running 'make'.
Major changes:
* Hosted on Github. Thanks, Google. [DC]
* element() is now an alias for match(). Suggested by Wiggles. [985-TK]
* Added json(), for creating valid JSON-encoded data. [MG]
* Added oob(), for sending out-of-band messages via the General MUD Communication Protocol (GMCP) telnet option. Requested by Qon. [MG]
* registers() only listed registers whose values were strings, not ints. [MG]
* filter() and filterbool() can now be passed additional arguments, for Rhost compatability. Requested by Volund. [1019-MG] [Rhost]
* valid() can now validate timezones, locktypes and lockkeys. Suggested by Volund. [1021,1025-MG]
* convtime() now returns #-1, instead of -1, on error. This change is -backwards incompatible-, but necessary as -1 is a potentially valid output for convtime(). Suggested by KimikoMuffin. [1010-MG]
* convsecs() can now accept negative inputs when Extended convtime() is available. Suggested by Volund. [1010-MG]
* avg() is now an alias for mean(). [1023-TK] [Rhost]
* textsearch() allows searching the contents of helpfiles. [MG]
* speak() no longer has the odd TinyMUSH behaviour of ': foo' being a semipose; speakpenn() is now an exact alias. [1034-MG]
* timefmt() and isdaylight() can now take a negative number of seconds for times prior to 1970 when Extended Convtime is available. [MG]
* colors(...,auto) returns colors in the same style as their input. Suggested by Kimiko. [MG]
* rjust(str,X,,1) truncated the end of the string, instead of the start. [MG]
* Minor json() bug and documentation fixes. [MG]
* wordpos() is now ansi-aware. [MG]
* More markup-awareness in a number of list functions. [MG]
* The 'kill' and 'slay' commands have been removed. [1033-TK]
* Remove ancient @channel foo=on behavior. Reported by Paige. [870-TK]
* @logwipe can do more than just erasing a log file. [SW]
* @hooks now have a number of named registers (available through r(<name>,args)) with each of the hooked command's arguments. [MG]
* Added @if and @skip. [MG] [Rhost] [MUX]
* help/search <pattern> lets you search within helpfiles. [MG] [Rhost]
* @newpassword now takes a generate switch, which creates a random password ala email_register and shows it to the executor. [Qon]
Minor changes:
* The 'HAVEN' flag can now only be set on players. [1033-TK]
* Added a few more date formats to getdate.template for convtime(). Suggested by Volund and Mercutio. [1020-MG]
* Most PennMUSH helpfiles are no longer hard-wrapped at 78 characters; noone connects from clients that can't wrap any more. [1030-MG]
* Other minor help fixes. [MG]
* Attempting to run an empty SQL query via any command/function now gives a better error/return value. Reported by Qon. [MG]
* Added some tests for json(), and more tests for ljust()/rjust(). [MG]
* Guests can no longer @channel/recall channels they aren't on. [MG]
* The hardcode no longer strictly enforces permissions for @wall, @rwall or @wizwall; anyone who can passes the normal command restriction can now use them. [MG]
* Add references to 'help channel functions' to various channel function help entries. By Qon.
* Clean up some more remnants of the previous configure package's naming convention in favor of autoconf style ones. [SW]
* OpenBSD compilation fixes. [SW]
* Support authorization of ssl_slave forwarded connections on NetBSD, OpenBSD. [SW]
* Remove old FAM-based file monitoring code, due to bitrot and FAM's last release being 2003. [SW]
* Add git revision, if present, to @version & version(). [994-TK]
* Log files that grow over a user-specified size can now be rotated or trimmed down. [SW]
* game/restart is now auto-generated during 'make update'. [928-TK]
* Fixed a memory leak in @switch. [MG]
* A bug in @lock allowed invalid lock names to be used. [MG]
* Added support for the General MUD Communication Protocol (GMCP). See for more info. Requested by Qon. [MG]
* Choosing what scheme is used in compressing attribute text in-game is now a run-time option set in mush.cnf, not options.h [SW]
* Minor fixes and resource cleanups reported by Qon. [MG]
* An off-by-one error led to passwords occassionally being hashed incorrectly and needing to be reset. Reported by Glass. [MG]
* Old-style raw ANSI codes (from old dbs, SQL, etc) was sometimes mistakenly stripped when sent to a client. Found and fixed by Qon. [1050]
* Some @mail selectors incorrectly selected all mail in the current folder. Found and fixed by Qon. [1055]
You can’t perform that action at this time.