To reduce disk and memory usage ispell stores its word lists as a list of base words each of which can have optional suffixes and affixes. For example, instead of storing separate words for abject, abjectness and abjectly, Ispell's English wordlists have a single entry abject/PY, where the /P flag is defined as -ness and /Y as -ly. You can run ispell noninteractively and ask it to expand these definitions with the -e option, where you give the base word and flags on standard input and ispell prints all the possible expansions. In ispell 3.2.06 there are four variants of this option, -e1 to -e4.
This patched version of ispell supports an additional expansion option -e5 which prints out how each expansion was formed. Alongside the expanded word it prints the base word and the flags that were used for that particular expansion. For example:
abandon/DGRS abandon abandon+S abandons abandon+R abandoner abandon+G abandoning abandon+D abandoned
This release also changes the copying conditions to remove the clause 4 added recently, which the maintainer Geoff Kuenning decided was a mistake. He has given permission to distribute Ispell with this clause taken out, so it's now pretty much a straight BSD licence.
The 'munchlist' and 'findaffix' shell scripts (the former of which is used in the build process) used temporary files in an insecure way, allowing others to overwrite your files using symlinks. This is now fixed, I hope. Based on a patch from Jeremy C. Reed.
I have incorporated some of the fixes made to ispell-3.2.06 by SuSE Linux, although not those that were Linux-specific. However this release is not the same as ispell-3.2.06 plus SuSE patches, because for many of the fixes I chose to go with a more general solution. (For example there is now a configuration variable MANFFSECT to say whether you want the 'file format' manual pages to go in section 4 or 5. Which could be considered overkill, but is probably necessary since somebody out there is probably still using a system that uses section 4.) The file README.SuSE in the tarball explains what I did with each patch.
The -o option tells ispell not to use any 'deformatters' for TeX, troff or HTML, but to just check the input as plain text. The default configuration of ispell (for historical reasons) is to strip out nroff markup, and previously there was no way to turn this off once installed!
I've made several small changes to the english wordlists, in particular to fix inconsistencies between british and american spellings. Check the ChangeLog for the full arcane details. (The releases epa3, epa4 and epa5 release were solely concerned with dictionary fixes.)
I have written test suites for some of the noninteractive uses of ispell, to test things like suffix expansion and stripping out nroff/TeX/HTML markup. There are also now some tests for the build system itself (to make sure manual page crossreferences are correct, for example). This is why 'make test' takes such a long time unless you have a fast machine. However I have not thoroughly tested the interactive mode of ispell! The code for interactive use has not changed at all since 3.2.06, so I think I can get away with this, but I recommend a brief test drive before you replace your existing ispell with this version.
The latest release is 3.2.06.epa7. Compared to the previous version (3.2.06.epa6) this fixes security holes in findaffix and munchlist.
I need the new expansion output for a spelling changer project I've been working on; for example, I need to look up a word like unrealised and find out that its base word is realise. Having done that the spelling can be changed to realize and the suffixes and affixes readded to get unrealized. This way the conversion tables need only one or two entries to cover all the words formed from this base.
I've contacted the ispell maintainer, Geoff Kuenning, with some patches, and while he's in favour of adding the feature at some point, a new ispell release isn't expected for a long time. So I've made this unofficial release as a stopgap. It is not a fork of the project. The change to the licence conditions is similar: new releases of ispell will not have the clause 4 that requires distribution sites to add a link to the ispell page, but 3.2.06 still does have it. The fixes from SuSE seemed like a good thing to include (originally I hoped to get this new version included in the distribution).
Make ispell obey $LANG to choose its dictionary.