2.1 Why does the syntax change?

Syntax changes are often made to make the LilyPond input code simpler for both reading and writing, but occasionally changes are made to accommodate new features or enhancements to existing functions.

Here is a real example to illustrate this.

All \paper and \layout property names are supposed to be written in the form first-second-third. However, in LilyPond version 2.11.60, it was noticed that the printallheaders property did not follow this convention. Should this property be left alone (confusing new users with an inconsistent format)? Or should it be changed (annoying old users with existing LilyPond input files)? The decision was eventually made to change the name of the property to print-all-headers, and by using the convert-ly command old users had a way to automatically update their existing input files.

Unfortunately, the convert-ly command is not capable to manage all syntax changes. For example, accents and non-English characters were entered using standard LaTeX notation in versions of LilyPond before 2.6; words like ‘Noël’ (which is ‘Christmas’ in French) had to be entered as No\"el. Starting with LilyPond 2.6, the special letter ‘ë’ must be entered directly as a UTF-8 character. Because convert-ly cannot convert LaTeX special characters into UTF-8 characters, older LilyPond input files have to be edited manually to take care of that.

The conversion rules of the convert-ly command work by using text pattern matching and replacement (rather than ‘understanding’ the context of what it is changing within a given input file). This has several consequences:


LilyPond Application Usage v2.25.20 (development-branch).