Matters relating to the PennMUSH server code itself, written in C, and commonly called "hardcode".

Changing the softcode parser

Submitted by raevnos on Thu, 2012-07-19 22:38

Every softcode function is implemented by a corresponding C function (Here called a FUNCTION, after the macro that sets up its arguments). Arguments passed to the function are give in an array of strings, and it returns things by appending to another string. For functions that work with numbers or dbrefs or other things besides strings, there's a lot of conversions from strings to another type and then back. This seems like a waste.

How Do I Report a Bug or Suggest a New Feature to Penn?

Submitted by MrWigggles on Fri, 2012-05-11 15:14

If you think you've found a bug or want to suggest a new feature to Penn, then you'll want to go the Google Code for Pennmush.


From there, you'll want to clink on the Issues tab, where you'll be brought to a list of the current open ticket for PennMush. You'll notice a mix of bug reports and new features.

Then you'll want to click on the New Issue button, and select on the pull down menu, Feature Request or Bug Report and fill out the form.

The changes to flags in p7

Submitted by raevnos on Fri, 2011-10-07 02:29

p7 saw a significant change to the way that flags (And powers) are stored on objects.

Some background: Flags are implemented internally as an array of bits. To see if a flag is set on an object by name (As in the softcode hasflag() function), you look up the bit position of that flag by its name, and index the object's flag array to see if that bit is 1 or 0. Because new flags can be added at run time with @flag, this bit array is dynamically allocated, and grown if needed. On M*U*S*H, it's currently taking up 9 bytes worth of space.

Persistant SSL connections

Submitted by raevnos on Sun, 2011-05-15 18:11

It still needs some more work before getting checked in for p5, but I have SSL connections that persist across @shutdown/reboots instead of getting dropped up and running. Only a few years after working out the basic design. Can't work faster than that!

The big problem has been that OpenSSL doesn't have a way of saving internal state across a reboot so that the same connections can be reused. In general, from a security standpoint, this is a good thing. It's just frustrating for players who use SSL connections. The solution is to use a proxy process to handle the SSL connections.

PennMUSH sourcecode documentation

Submitted by talvo on Wed, 2011-05-11 21:25

For anyone interested in hacking PennMUSH, you can now view the documentation for the PennMUSH source code (taken directly from the comments in the source) online, at http://doxygen.pennmush.org.

You can see the functions that exist, the arguments they take, and their expected return values, all with automatic links to which files they're found in, the members of the structures used, etc.

PennMUSH git repository

Submitted by raevnos on Wed, 2010-02-03 10:55

I've put up an experimental git repository for Penn.

Get it via: git clone http://download.pennmush.org/Repos/pennmush.git

Handy for local hackers, since you can create local branches for custom stuff and keep up to date. I think. Branches and git and I haven't gotten along in the past. Please don't ask me how to use it.

It should sync with the master subversion repository on googlecode every couple of hours.

Errors Compiling Pennmush-1.8.3p10 in Cygwin

Submitted by Tamesis on Sat, 2010-01-16 06:20

Hey everyone,

I've been struggling with getting Pennmush-1.8.3p10 to compile on Cygwin. The Cygwin package on my computer is complete, such that Pennmush-1.8.1p10 compiles cleanly. The following is the error message I am receiving during the compile process:

gcc -std=gnu99 -ggdb -O -W -Wall -pedantic -Wno-comment -I/usr/include/ -I.. -I.
./hdrs -c -o strutil.o strutil.c
strutil.c:1193: error:conflicting types for 'imaxdiv_t'
/usr/include/inttypes.h:231: error: previous declaration of 'imaxdiv_t'
make[1]: *** [strutil.o] Error1