Last release: Aug 10 2018
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)
Numbers next to the developer credit refer to Github issue numbers.
HELP SEARCHING
for details.--enable-nls
to turn it on if needed. [SW]NEW_PE_INFO
struct, for signficant memory savings in softcode that queues lots of commands. [SW]colors()
key arguments (Except n). [SW, 1112]div()
or band()
) now use 64-bit values instead of 32-bit. [SW]isjson()
json_query()
get and exists can follow paths into objects instead of taking a single key/index. Suggested by qa’toq. [SW]json_mod()
for modifying complex JSON objects. [SW]json_query(str, unescape)
handles unicode escape sequences.json(string, foo)
escapes non-ascii characters.clone()
now takes an optional fourth argument to act like @clone/preserve
[797]scan()
give finer control of what to scan. [MG]orflags()
, orlflags()
, andflags()
, andlflags()
, and the power versions no longer return errors on unknown flags/powers. They instead treat the unknown one as if it wasn’t set. Suggested by Qon. [1180].timecalc()
and secscalc()
for adding/subtracting intervals from times.@suggest
and suggest()
for user-defined spellchecking. Loads /usr/share/dict/words or another configurable wordlist by default.connlog()
and connrecord()
for interfacing with enhanced connection logs.soundex()
and soundslike()
now support a second phonetic hash algorithm besides soundex.link()
now returns 1 on success, 0 or #-1 on failure. [MT]owner()
now accepts two optional arguments, allowing ownership to be changed as in @chown
and @atrchown
. [MT]@http
for interacting with RESTFul web APIs. [SW]stripaccents()
supports a second, smarter, transliteration algorithm.lcstr2()
and ucstr2()
with proper support for characters like the German eszett (ß) that map to a different number of characters in different cases.@chatformat
now receives a new arg, %6
, which defaults to “says” but may be replaced by the speechtext mogrifier. Inspired by Bodin. [MG]etimefmt()
supports $w
and $y
formats for weeks and years. [SW, 804]@grep/iprint
hilites the matching text in the same case it appears in the attribute body. [SW, 1120]@mail
wasn’t updating a player’s MAILCURF attribute correctly. [CLDawes, 1131]mud_url
config option set caused an infinite refresh loop. Reported by grapenut. [1149]sigrecv_ack()
won’t hang the mush if it somehow gets called at the wrong time. Also fix a file descriptor leak in the signal handling code. [SW]pe_info
into IDLE and HAVEN attributes from the page command. [MG]align()
now always truncate to the column width, rather than incorrectly truncating at a space. Reported by Qon. [MG, 1178]json_query()
didn’t understand an action of ‘type’ as documented. [SW]@clone
without /preserve wasn’t stripping privileged flags and such. [1190,SW]@chown/preserve
was resetting wiz-bit despite it’s help file indicating otherwise. [1187] PR by Qon.scan()
now determines if objects will be included based on whether the caller can examine them, rather than if scan()
’s <looker>
can examine them. [MG]setq()
will and won’t let you set the values of named registers when you’ve hit the limit. [MG, 1179]sqlescape()
when using a sqlite3 connection no longer also requires MySQL.@mail
without a message list respects the current folder instead of using folder 0. [77]ufun()
, ulocal()
, etc. could get confused by ansi (markup) in the attribute name. Strip markup first. [MT]info_slave
and ssl_slave
use kqueue()
to efficiently be notified of parent mush crashes.pledge(2)
to limit their privileges. [SW]