The most recent release implements support for IETF RFC 1073: Telnet Window Size Option/NAWS (Negotiate About Window Size). Currently, clients which support NAWS (for example, TinyFugue 5), will actively communicate your terminal size to mudpy, which will then take the column count (width) into consideration when formatting and wrapping subsequent text output. Once pagination is implemented, terminal row count (height) will be able to influence this too.

The word wrapping routines now take so-called East-Asian width glyphs into account, since they should occupy two columns on most displays. Obviously, use of Asian character sets requires a client supporting UTF-8 encoding and binary-mode Telnet, as well as a font with the expected glyphs represented.

The latest release brings a refactored Telnet option negotiation stack, attempting to properly implement IETF RFC 1143. This is an outcropping of the recent additional supported Telnet options, as well as to simplify some upcoming improvements. More to come!

UTF-8 Support

2009-05-23

UTF-8 encoded input is now accepted from clients who negotiate the transmit binary Telnet option for sending, and UTF-8 output will be sent to any clients negotiating it for receiving (though clients should usually negotiate neither or both together). Most surveyed MUD clients have limited or no support at present, but this situation is slowly improving. In the meantime, rudimentary UTF-8/binary-mode Telnet documentation is being drafted to help simplify testing, and in hopes that this can serve as a reference implementation for other MUD clients and engines in the near future.

Unicode

2009-04-12

In preparation for an eventual Python 2.6/3.x transition, the mainline codebase has been reworked to be completely Unicode-clean. All embedded string constants are declared as Unicode data types now, and data streams from files and sockets are expected to be in either 7-bit ASCII or UTF-8 encoding. Any entry points for raw byte streams are clearly marked in the code so we can easily switch to using the byte data type in later Python versions.