Version 4.30 15-June-2018
-------------------------
1. If a "movement" was coded without any staves (for example, for a title
page), there was the possibility of a segmentation crash due to memory
corruption. This is a very old bug, surprisingly never triggered before.
2. Added the "tripletize" feature, somewhat of an experiment.
3. Allow semicolon and comma after any note, not just quavers and shorter, to
make life easier when halvenotes and doublenotes are being used.
4. Implement [doublenotes] and [halvenotes] to alter note lengths without
affecting time signatures.
5. Make -norepeat a synonym of -norepeats because I keep forgetting.
6. Make "stafflines" a synonym of "stavelines" because staff/stave are supposed
to be interchangeable throughout.
7. Added an optional thickness to -drawstavelines.
8. Repeats in the middle of bars are now honoured in MIDI output.
9. If there were more than 20 text strings preceding a note, PMW could crash.
The limit has been increased to 50, and a test for overflow is now in place.
10. Arrange to free heap memory so tests can run with -fsanitize=address.
11. If a chord was repeated multiple times by 'x' followed by a number greater
than 1, a data overrun could occur. There is now also a hard error if there
are too many notes in a chord (the limit is now 16).
12. If a midichannel directive contained a volume setting, undefined memory was
being copied accidentally (but never used).
13. Several code refactorizations to tidy up suspect code picked up by gcc and
clang sanitizers.
14. "Printtime" and "printkey" directives used to apply to the entire piece;
even if set in the second movement they would affect the first. Now they
apply only to the movement they are set in and any that follow.
15. Some other changes for "printkey":
(a) At a mid-stave change of key, PMW used to check for C major or A minor
when deciding whether to automatically insert a previous key cancellation
signature using natural signs, though in one case the test for A minor was
missing. Now it checks for a key signature of zero width, which means that
if "printkey" defines an empty string for the new key, a cancellation
signature will be generated.
(b) Previously, a cancellation signature took no notice of any "printkey"
setting. There is now an optional second argument for "printkey" that
specifies what to print for a cancellation. If not supplied, an empty
string is used.
16. Added four new characters to the music font: reverse turns and half circles.
17. Characters from the PMW-Alpha font were not being correctly included in the
documentation PDF (something changed and I didn't notice). This has been
fixed by including the type 3 PostScript font explicitly when building the
PDF from SDoP's PostScript output.
Version 4.29 26-June-2016
-------------------------
1. Added -norc to the scripts for running tests to ensure that the user's
.pmwrc file, if it exists, is ignored.
2. Running with a lot more compiler warnings turned on threw up a number of
infelicities in the code. Refactoring has got rid of the compiler warnings.
3. Compiling with clang threw up a few that gcc missed; it also found a genuine
bug, a misplaced ) in an expression. By pure fluke there appeared to be no
way of provoking misbehaviour, because what was being checked was re-checked
(correctly) later.
4. Allow ! as a modifier to notes as well as rests.
Problems found locating distfiles:
Package acroread7: missing distfile AdobeReader_enu-7.0.9-1.i386.tar.gz
Package acroread8: missing distfile AdobeReader_enu-8.1.7-1.sparc.tar.gz
Package cups-filters: missing distfile cups-filters-1.1.0.tar.xz
Package dvidvi: missing distfile dvidvi-1.0.tar.gz
Package lgrind: missing distfile lgrind.tar.bz2
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.