The default handling of backslashes in sub() and gsub() has been reverted to the behavior of 3.1, despite having brought standards compliance. The implementation of Rational Range Interpretation has been completed. Failure to set the group is no longer a fatal error. Lots of minor bugs have been fixed. Many portability improvements have been made.
New options were added. All long options now have corresponding short options. The "--sandbox" option disables the call of system() and write access to the file system. The POSIX 2008 behavior for "sub" and "gsub" is now the default, bringing a change from the previous behavior. Regular expressions were enhanced. Many further enhancements as well as bugfixes and code cleanups were made.
POSIX is followed in handling of local numeric formats for input, output, and number/string conversions. Multibyte detection has been improved. Handling of 'close' was made more POSIX-compliant for POSIXLY_CORRECT. Automake was updated to 1.7.5. configure.in was renamed to configure.ac. C-style switch statements are available, but must be enabled at compile time via 'configure --enable-switch'. %c always prints no more than one character whatever precision is provided. strtonum(<number>) now works again. gettext was updated to 0.12.1. Historical practice and POSIX is followed for the return value of 'rand': it's now 0 <= N < 1.