Fetching contributors…
Cannot retrieve contributors at this time
187 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]