1 LilyPond — Changes
  2 ******************
  3 
  4 This document lists changes and new features in LilyPond version 2.24.3
  5 since 2.22.
  6 
  7           Note: LilyPond releases can contain syntax changes, which may
  8           require modifications in your existing files written for older
  9           versions so that they work in the new version.  To upgrade
 10           files, it is *strongly recommended* to use the ‘convert-ly’
 11           tool distributed with LilyPond, which is described in *note
 12           (lilypond-usage)Updating files with convert-ly::.
 13           ‘convert-ly’ can perform almost all syntax updates
 14           automatically.  Frescobaldi users can run ‘convert-ly’
 15           directly from Frescobaldi using “Tools > Update with
 16           convert-ly...”.  Other editing environments with LilyPond
 17           support may provide a way to run ‘convert-ly’ graphically.
 18 
 19 Major changes in LilyPond
 20 *************************
 21 
 22    • LilyPond now requires Guile 2.2.  Even if you are not writing
 23      Scheme code yourself, you may be using libraries that contain a
 24      non-trivial amount of customizations.  If they do not work with
 25      LilyPond version 2.24.3, please report this to the library’s
 26      developers.  If you _are_ a library developer, *note Notes on Guile
 27      2.2:: below.
 28 
 29    • The infrastructure for creating the official binaries has been
 30      completely rewritten, incident with the switch to Guile 2.2.  As of
 31      this release, we provide 64-bit binaries for macOS and Windows.
 32      Also, all packages are made available as simple archives that can
 33      be extracted to any “installation” location.  To uninstall, simply
 34      delete that directory.  We also discontinued the limited editor
 35      that was installed on macOS and Windows, LilyPad, and recommend
 36      switching to an external solution instead, such as the popular
 37      editor Frescobaldi (https://frescobaldi.org), or one of the others
 38      listed in *note (lilypond-web)Easier editing::.  For more
 39      information, please refer to the detailed instructions in *note
 40      (lilypond-learning)Installing::.
 41 
 42 Notes for source compilation and packagers
 43 ==========================================
 44 
 45 This section is aimed at enthusiasts compiling LilyPond from source and
 46 packagers preparing LilyPond for distribution.  If you are not part of
 47 either group, you can skip over this section.
 48 
 49    • As mentioned above, LilyPond now requires Guile 2.2.  If needed for
 50      distribution reasons, it can also be compiled with Guile 3.0 by
 51      passing ‘GUILE_FLAVOR=guile-3.0’ to the ‘configure’ script.
 52      However, this is not yet recommended nor officially supported.
 53 
 54    • The Scheme code evaluator in Guile 2.2 is slower than in Guile 1.X.
 55      To offset most of the performance penalty, we recommend compiling
 56      the ‘.scm’ files into bytecode by first running ‘make bytecode’
 57      during compilation and then ‘make install-bytecode’ in addition to
 58      ‘make install’.
 59 
 60    • Starting with this stable release, LilyPond’s build system does not
 61      install text fonts anymore.  Please provide them as separate
 62      packages while paying attention to the fonts’ license and notice
 63      files.
 64 
 65 New for musical notation
 66 ************************
 67 
 68 Pitches improvements
 69 ====================
 70 
 71    • Support for alternate accidentals was improved.  Through the
 72      ‘alterationGlyphs’ property of staff-like contexts, accidental
 73      glyphs may be set for all grobs at once (refer to *note
 74      (lilypond-notation)Alternate accidental glyphs::).
 75 
 76 [[image of music]]
 77    • Ottava brackets may apply to a single voice instead of the entire
 78      staff.  This used to require workarounds.
 79 
 80           \layout {
 81             \context {
 82               \Staff
 83               \remove Ottava_spanner_engraver
 84             }
 85             \context {
 86               \Voice
 87               \consists Ottava_spanner_engraver
 88             }
 89           }
 90 
 91 [[image of music]]
 92 Rhythm improvements
 93 ===================
 94 
 95    • The new ‘\section’ command inserts a double bar line that interacts
 96      gracefully with repeat bar lines.  A passage can be named with the
 97      new ‘\sectionLabel’ command.
 98 
 99           \fixed c' {
100             f1
101             \break
102             \section
103             \sectionLabel "Trio"
104             \repeat volta 2 {
105               b1
106             }
107           }
108 [[image of music]]
109    • ‘\numericTimeSignature’ and ‘\defaultTimeSignature’ now act on all
110      staves at once (more precisely, on all staves in the same ‘Timing’
111      context), thus matching the behavior of ‘\time’.
112 
113    • The ‘\rhythm’ markup command has been added.  It is a simple way to
114      enter rhythms mixed with text, such as in “swing” indications.
115 
116           \relative {
117             \tempo \markup {
118               Swing
119               \hspace #0.4
120               \rhythm { 8[ 8] } = \rhythm { \tuplet 3/2 { 4 8 } }
121             }
122             b8 g' c, d ees d16 ees d c r8
123           }
124 [[image of music]]
125    • The ‘\enablePolymeter’ command is now provided as an input
126      shorthand for moving engravers as is necessary to allow different
127      time signatures in parallel.  The code:
128 
129           \layout {
130             \context {
131               \Score
132               \remove Timing_translator
133               \remove Default_bar_line_engraver
134             }
135             \context {
136               \Staff
137               \consists Timing_translator
138               \consists Default_bar_line_engraver
139             }
140           }
141 
142      can thus be shortened as:
143 
144           \layout {
145             \enablePolymeter
146           }
147 
148      Independent of this, ‘Default_bar_line_engraver’ has been removed.
149 
150    • The new option ‘visible-over-note-heads’ can be used to make tuplet
151      brackets always appear when their direction is set to be over the
152      note heads.  It can be used with the default tuplet bracket
153      visibility style or with ‘#'if-no-beam’.
154 
155 [[image of music]]
156    • Measure counts now take compressed multi-measure rests and
157      alternatives into account.
158 
159 [[image of music]]
160    • Bar numbers may be centered in their measure, as is common in film
161      scores.
162 
163           \layout {
164             \context {
165               \Score
166               centerBarNumbers = ##t
167               barNumberVisibility = #all-bar-numbers-visible
168             }
169           }
170 
171           <<
172             { \repeat unfold 3 { c'4 d' e' f' } }
173             { \repeat unfold 3 { c'4 d' e' f' } }
174           >>
175 [[image of music]]
176    • The alignment of bar numbers appearing in the middle or end of a
177      system has been changed to align them on their left edge.  This is
178      in keeping with the advice of Elaine Gould (‘Behind Bars’, p. 237),
179      and was mostly the consensus reached in a discussion of the issue
180      by developers.  The alignment of bars at the beginning of a system
181      remains unchanged.
182 
183    • ‘\bar ","’ creates a short bar line.
184 
185 [[image of music]]
186    • The following predefined bar types no longer appear as a single bar
187      line at the end of a line.  Annotated bar types (e.g., ‘\bar
188      "S-|"’) have been added for that purpose.
189 
190 [[image of music]]
191    • ‘\bar ""’ is no longer necessary to print the first bar number.  It
192      now suffices to set ‘barNumberVisibility’ to
193      ‘all-bar-numbers-visible’, or one of the other visibility settings
194      where the first bar number is visible.
195 
196      Note that this is a change in behavior for scores that set
197      ‘barNumberVisibility’ to ‘all-bar-numbers-visible’ or such and
198      ‘BarNumber.break-visibility’ to ‘#t’ without having ‘\bar ""’.
199      Now, a bar number is printed at the beginning.  This is just the
200      expected behavior (_all_ bar numbers should be visible), but due to
201      slightly unclear documentation, users may have used these settings
202      to print bar numbers in the middle of systems except for the first
203      bar number.  In such cases, simply remove ‘\set
204      Score.barNumberVisibility = #all-bar-numbers-visible’ since
205      ‘\override BarNumber.break-visibility = ##t’ does the relevant
206      setting alone.
207 
208    • The ‘\break’ command now always inserts a break, bypassing all
209      default decisions about break points.  For example, it is no longer
210      necessary to insert ‘\bar ""’ to obtain a mid-measure break.
211 
212      The new ‘\allowBreak’ command inserts a possible break point,
213      without forcing it, but bypassing default decisions like ‘\break’
214      does.
215 
216    • The bar line type ‘"-"’ has been removed.  ‘convert-ly’ converts it
217      to ‘""’.  There is a slight difference in horizontal spacing at
218      line breaks.
219 
220    • ‘automaticBars’ has been removed.  ‘convert-ly’ converts
221      ‘automaticBars = ##f’ to ‘measureBarType = #'()’.
222 
223    • ‘\defineBarLine’ now accepts ‘#t’ in lieu of repeating the mid-line
224      glyph name.
225 
226    • ‘Bar_engraver’ used to forbid line breaks between bar lines in all
227      cases, but now it only does so when the
228      ‘forbidBreakBetweenBarLines’ context property is set to ‘#t’, which
229      is the default.  The ‘barAlways’ context property, which previously
230      worked around the lack of ‘forbidBreakBetweenBarLines’, has been
231      removed.
232 
233    • Due to changes in the internals of ‘\bar’, it is no longer
234      supported to use it before creating lower contexts with ‘\new’.
235      Such uses will now create an extra staff.  This is similar to what
236      happens with commands such as ‘\override Staff...’ (see *note
237      (lilypond-usage)An extra staff appears::).
238 
239           {
240             \bar ".|:"
241             <<
242               \new Staff { c' }
243               \new Staff { c' }
244             >>
245           }
246 [[image of music]]
247      The solution is to place ‘\bar’ inside the music for each staff, as
248      is usual with most commands.
249 
250           <<
251             \new Staff { \bar ".|:" c' }
252             \new Staff { \bar ".|:" c' }
253           >>
254 [[image of music]]
255    • The bar type ‘"-span|"’ creates a mensurstrich.
256 
257 [[image of music]]
258    • ‘Staff’ contexts use the new ‘Caesura_engraver’ to notate the
259      ‘\caesura’ command.
260 
261 [[image of music]]
262 Expressive mark improvements
263 ============================
264 
265    • Events attached to notes (e.g., dynamics or articulations) can be
266      delayed by an arbitrary duration using ‘\after’.  This simplifies
267      many situations that previously required the use of explicit
268      polyphony and spacer rests.
269 
270           {
271             \after 2 \turn g'2. a'4
272             \after 2 \< b'1
273             \after 2. \f c''
274             <>\< \after 4 \> \after 2\! d''
275           }
276 [[image of music]]
277    • Broken hairpins now have some left padding by default.  This is in
278      line with published scores and it fixes some cases where broken
279      hairpins were vertically displaced by the key signature.
280 
281           \relative {
282             \key a \major
283             c''4^\< c c c \break c c c c\! |
284           }
285 [[image of music]]
286    • The ends of hairpins may now be aligned to the ‘LEFT’, ‘CENTER’ or
287      ‘RIGHT’ of ‘NoteColumn’ grobs by overriding the property
288      ‘endpoint-alignments’.
289 
290 [[image of music]]
291    • The direction of a trill spanner can now be set with direction
292      indicators like other articulations, i.e.  with ‘_\startTrillSpan’
293      or ‘^\startTrillSpan’.
294 
295    • The default appearance of trill spanners has changed to better
296      match classical engraving conventions.  They now end before the
297      next note, not over it.  If the next note has an accidental, they
298      stop before it.  If the next note is the first note of a measure,
299      they stop over the bar line instead.
300 
301 [[image of music]]
302    • The padding by default for fermatas is now larger.  This avoids
303      some cases where the fermata was placed too close to dots and other
304      objects.
305 
306 [[image of music]]
307    • The flageolet symbol is now smaller and slightly thicker.  This is
308      in line with published scores and makes the recommended workaround
309      to make it smaller (‘\tweak font-size -3 \flageolet’) unnecessary.
310 
311 [[image of music]]
312    • The accent glyph is now a bit smaller.  This fixes some cases where
313      a natural sign would vertically displace accents.
314 
315 [[image of music]]
316    • The comma glyph shape, as used in the ‘\breathe’ command, has been
317      changed to a more common form.
318 
319 [[image of music]]
320      The old glyph remains available under the name ‘raltcomma’:
321 
322           {
323             \override BreathingSign.text =
324               \markup { \musicglyph "scripts.raltcomma" }
325             f'2 \breathe f' |
326           }
327 [[image of music]]
328    • The new context property ‘breathMarkType’ selects the mark that
329      ‘\breathe’ produces from several predefined types.
330 
331           \fixed c' {
332             \set breathMarkType = #'tickmark
333             c2 \breathe d2
334           }
335 [[image of music]]
336 Repeat improvements
337 ===================
338 
339    • Repeat alternatives may appear within the repeated section.
340 
341           \repeat volta 3 { c'1 \alternative { d' e' } f' }
342 [[image of music]]
343    • The volta numbers for repeat alternatives may be set with the
344      ‘\volta’ command.
345 
346           \repeat volta 3 c'1 \alternative { \volta 1 d' \volta 2,3 e' }
347 [[image of music]]
348    • The new ‘\repeat segno’ command automatically notates a variety of
349      _da-capo_ and _dal-segno_ forms.
350 
351           music = \fixed c' {
352             \repeat segno 2 {
353               b1
354             }
355             \fine
356           }
357 
358           \score { \music }
359           \score { \unfoldRepeats \music }
360 [[image of music]]
361    • The new ‘\fine’ command inserts a final bar line that interacts
362      gracefully with repeat bar lines.  Used inside ‘\repeat’, it also
363      prints _Fine_ and ends the music after unfolding.
364 
365           music = \fixed c' {
366             \repeat volta 2 {
367               f1
368               \volta 2 \fine
369               \volta 1 b1
370             }
371           }
372 
373           \score { \music }
374           \score { \unfoldRepeats \music }
375 [[image of music]]
376    • The ‘\volta’ command removes music when a repeat is unfolded.
377 
378    • The ‘\unfolded’ command adds music when a repeat is unfolded.
379 
380 Editorial annotation improvements
381 =================================
382 
383    • The new ‘\staffHighlight’ and ‘\stopStaffHighlight’ commands can be
384      used to color a musical passage.
385 
386 [[image of music]]
387    • A new grob ‘FingerGlideSpanner’ is now available, indicating a
388      finger gliding on a string from one to another position.  Several
389      appearances are possible, depending on the setting of ‘style’.
390      Shown in the image are ‘line’, ‘stub-left’, ‘stub-right’ and
391      ‘stub-both’.
392 
393 [[image of music]]
394      Also possible is ‘dashed-line’, ‘dotted-line’, ‘zigzag’, ‘trill’,
395      ‘bow’ and ‘none’.
396 
397    • Balloons now have changeable formatting.
398 
399 [[image of music]]
400    • Parenthesizing chords is supported.  Currently, the font size of
401      the parentheses has to be adjusted manually.
402 
403 [[image of music]]
404    • Parenthesizing spanners is supported.
405 
406 [[image of music]]
407    • A “time-based” version of the ‘\parenthesize’ command was added.
408      It takes a grob path: ‘\parenthesize GROBNAME’ or ‘\parenthesize
409      CONTEXTNAME.GROBNAME’.  It acts like a ‘\once \override’.  This
410      interface complements the already existing form ‘\parenthesize
411      EVENT’, in a fashion similar to ‘\footnote’.
412 
413           {
414             \parenthesize NoteHead
415             c'1
416             \parenthesize Staff.KeySignature
417             \key g \major
418             c'1
419           }
420 [[image of music]]
421    • Adding the ‘Melody_engraver’ to the ‘Voice’ context now works out
422      of the box to change the stem direction of the middle note
423      according to the melody.  Previously, this required an additional
424      override to ‘Stem.neutral-direction’.
425 
426           \new Voice \with {
427             \consists Melody_engraver
428           }
429           \relative c'' {
430             \autoBeamOff
431             g8 b a e g b a g |
432             c b d c b e d c |
433           }
434 [[image of music]]
435      The ‘suspendMelodyDecisions’ context property may be used to turn
436      off this behavior temporarily, as ‘\override Stem.neutral-direction
437      = #DOWN’ used to do.
438 
439    • The new ‘Mark_tracking_translator’ takes over from ‘Mark_engraver’
440      the decision of when to create a mark.  ‘Mark_engraver’ continues
441      to control formatting and vertical placement.
442 
443      By default, ‘Mark_engravers’ in multiple contexts create a common
444      sequence of marks.  If independent sequences are desired, multiple
445      ‘Mark_tracking_translators’ must be used.
446 
447 Text improvements
448 =================
449 
450    • New commands ‘\textMark’ and ‘\textEndMark’ are available to add an
451      arbitrary piece of text between notes, called a text mark.  These
452      commands improve over the previously existing syntax with the
453      ‘\mark’ command called as ‘\mark MARKUP’ (i.e., ‘\mark "..."’ or
454      ‘\mark \markup ...’).
455 
456           \fixed c' {
457             \textMark "Text mark"
458             c16 d e f e f e d c e d c e d c8
459             \textEndMark "Text end mark"
460           }
461 [[image of music]]
462      ‘\textMark’ and ‘\textEndMark’ are now the recommended way to
463      create textual marks.  The use of ‘\mark’ for this purpose is still
464      supported, but discouraged (note that the ‘\mark’ command itself is
465      not discouraged, only calling it on a markup argument; ‘\mark
466      \default’ or ‘\mark NUMBER’ is still the recommended and only way
467      to create a rehearsal mark).
468 
469      The new commands have several differences to ‘\mark MARKUP’.  There
470      can be an arbitrary number of them at a given moment, while there
471      can only be one use of ‘\mark’.  They output grobs of the dedicated
472      ‘TextMark’ type, whereas ‘\mark’ creates a ‘RehearsalMark’ grob
473      regardless of whether it is called for a rehearsal mark or a
474      textual mark; introducing this distinction allows stylesheets to
475      set different layout settings for rehearsal marks and text marks.
476      The alignment set by the new commands is different: ‘\textMark’
477      always creates a left-aligned mark, and ‘\textEndMark’ creates a
478      right-aligned mark; in contrast, the alignment of a ‘RehearsalMark’
479      depends on the anchor point of the object it aligns to.
480 
481      See *note (lilypond-notation)Text marks:: for full details.
482 
483    • Text variant glyphs for sharp, flat, natural, double sharp, and
484      double flat are now available in the Emmentaler fonts.  In markup,
485      they can be easily accessed with standard Unicode values.
486 
487 [[image of music]]
488    • It is now possible to control the width and the shape of (some)
489      Emmentaler digits using OpenType features.
490 
491 [[image of music]]
492    • ‘\smallCaps’ now works on any markup, not just on a bare string.
493 
494    • The syntax for conditions in markups was made more flexible and
495      user-friendly.  It uses the new markup commands ‘\if’ and
496      ‘\unless’.  Here are example replacements:
497 
498      2.22 syntax                              2.24 syntax
499      --------------------------------------------------------------------------------
500      ‘\on-the-fly #first-page ...’            ‘\if \on-first-page ...’
501      ‘\on-the-fly #not-part-first-page ...’   ‘\unless \on-first-page-of-part ...’
502      ‘\on-the-fly #(on-page N) ...’           ‘\if \on-page #N ...’
503 
504    • With the new markup list command ‘string-lines’ it is now possible
505      to split a string at a given character.  The default is to split at
506      line break.  Surrounding white space gets dropped.  The resulting
507      list of markups may be further formatted.  This is a very
508      convenient way of entering additional stanzas for songs.
509 
510 [[image of music]]
511    • The new markup command ‘\align-on-other’ translates a markup as if
512      it was aligned to another markup.
513 
514 [[image of music]]
515    • Two new markup functions ‘\with-dimension’ and
516      ‘\with-dimension-from’ are available.  They are similar to
517      ‘\with-dimensions’ and ‘\with-dimensions-from’, respectively,
518      modifying only a single dimension (instead of both).
519 
520    • New markup commands ‘\with-true-dimension’ and
521      ‘\with-true-dimensions’ are available.  They give the markup the
522      actual extent(s) of its printed ink, which may differ from the
523      default extents for some font glyphs due to text regularity
524      constraints.
525 
526 [[image of music]]
527    • Text replacements can now replace strings with any markup, not just
528      with a string.
529 
530           \markup
531             \replace #`(("2nd" . ,#{ \markup \concat { 2 \super nd } #}))
532             "2nd time"
533 [[image of music]]
534    • A new markup command ‘\with-string-transformer’ is available.  It
535      interprets a markup with a “string transformer” installed; the
536      transformer is called when the interpretation of the markup
537      requires interpreting a string, and allows to perform modifications
538      on this string, such as changing case.
539 
540    • The ‘markup->string’ function converts a markup into an approximate
541      string representation; it is used for outputting PDF metadata as
542      well as MIDI lyrics and markers.  Markup commands can now define a
543      custom method to convert markups created using them into strings,
544      for use by ‘markup->string’.  For example:
545 
546           #(define-markup-command (upcase layout props arg) (string?)
547              #:as-string (string-upcase arg)
548              (interpret-markup layout props (string-upcase arg)))
549 
550 New for specialist notation
551 ***************************
552 
553 Fretted string instrument improvements
554 ======================================
555 
556    • The string tunings ‘banjo-double-c’ and ‘banjo-double-d’ were
557      added.
558 
559    • A new grob ‘BendSpanner’ is now available for ‘TabStaff’,
560      indicating a bent string.  Apart from the default three styles are
561      possible: ‘'hold’, ‘'pre-bend’ and ‘'pre-bend-hold’.
562 
563 [[image of music]]
564 Percussion improvements
565 =======================
566 
567    • The drum notation style ‘weinberg-drums-style’ was added.  It is
568      based on Norman Weinberg’s standardization work.
569 
570 Wind instrument improvements
571 ============================
572 
573    • Additional display details of a ‘\woodwind-diagram’ can now be
574      specified including the angle of partially-covered-keys and the
575      display of non-graphical trill keys.
576 
577           \markup {
578             \override #'(graphical . #f)
579             \override #'(woodwind-diagram-details . ((fill-angle . 90)
580                                                      (text-trill-circled . #f)))
581             \woodwind-diagram #'flute #'((cc . (one1h))
582                                          (lh . ())
583                                          (rh . (besT)))
584           }
585 [[image of music]]
586 Chord notation improvements
587 ===========================
588 
589    • Support for chord grids has been added.
590 
591 [[image of music]]
592    • In ‘ChordNames’, multi-measure rests now also cause the “N.C.”
593      symbol to be printed, just like normal rests.
594 
595    • In figured bass, ‘_’ now creates an empty figure that still takes
596      up space.
597 
598           \figures {
599             <8 _ 4]> <_ 5+ 3>
600           }
601 [[image of music]]
602    • Formatting of figured bass has been improved.  In particular, the
603      default size is reduced to a value used by many Urtext editions of
604      Baroque music.
605 
606    • In figured bass, specially designed glyphs for ‘6\\’, ‘7\\’, and
607      ‘9\\’ are now used by default.  Similarly, specially designed
608      glyphs for symbols ‘2\+’, ‘4\+’, and ‘5\+’ are used by default if
609      plus signs appear after the number.
610 
611 [[image of music]]
612      Use the new command ‘\figured-bass’ to access these glyphs in
613      markup.
614 
615    • In figured bass, brackets can now also be added around accidentals.
616 
617 [[image of music]]
618 Ancient notation improvements
619 =============================
620 
621    • A new context ‘VaticanaLyrics’ is available.  It is similar to
622      ‘Lyrics’, providing a hyphenation style (a single, flush-left
623      hyphen between two syllables) as used in the notational style of
624      Editio Vaticana.
625 
626    • The predefined commands for Gregorian divisiones are no longer
627      variations on ‘\breathe’.  ‘\divisioMinima’, ‘\divisioMaior’,
628      ‘\divisioMaxima’, and ‘\virgula’ are variations on the basic
629      ‘\caesura’.  ‘\finalis’ is equivalent to ‘\section’.
630 
631      ‘MensuralStaff’ and ‘VaticanaStaff’ use ‘Divisio_engraver’ to
632      interpret the above commands as well as ‘\repeat volta’ and
633      ‘\fine’.
634 
635           \new MensuralStaff \fixed c' {
636             \repeat volta 2 { f2 f }
637             g1
638             a1 \section
639             b1 \fine
640           }
641 [[image of music]]
642    • ‘KievanStaff’, ‘MensuralStaff’, ‘PetrucciStaff’, and
643      ‘VaticanaStaff’ now allow line breaks anywhere, and they no longer
644      create ‘""’ measure bar lines.
645 
646    • In ‘GregorianTranscriptionStaff’, divisiones are now engraved as
647      ‘BarLine’ grobs by default.  To change them to ‘Divisio’ grobs, use
648      ‘\EnableGregorianDivisiones’.
649 
650    • ‘GregorianTranscriptionStaff’ allows a line break after any note
651      and no longer uses ‘Time_signature_engraver’.
652 
653    • ‘GregorianTranscriptionVoice’ no longer uses ‘Stem_engraver’.
654 
655 World music improvements
656 ========================
657 
658    • Support for Persian classical music is now available.  For this,
659      two accidental glyphs, _sori_ and _koron_, have been added to
660      LilyPond.
661 
662           \include "persian.ly"
663 
664           \relative c' {
665             \key d \chahargah
666             bk'8 a gs fo r g ak g |
667             fs ek d c d ef16 d c4 |
668           }
669 [[image of music]]
670 Miscellaneous improvements
671 **************************
672 
673    • In the Emmentaler font, identical-looking noteheads whose only
674      difference was stem direction have been consolidated into a single
675      glyph.  For instance, the glyphs ‘noteheads.u2triangle’ and
676      ‘noteheads.d2triangle’ have been replaced by a single glyph,
677      ‘noteheads.s2triangle’.  Notehead pairs that look visually
678      different depending on the direction remain distinct.
679 
680      In addition, the ‘stem-attachment’ property of ‘NoteHead’ grobs now
681      returns its actual, direction-dependent stem attachment point
682      instead of a hypothetical upwards-stem attachment point.
683 
684    • Two redundant glyphs in the Emmentaler font have been removed:
685      ‘scripts.trillelement’ (use ‘scripts.trill_element’ instead) and
686      ‘scripts.augmentum’ (use ‘dots.dotvaticana’ instead).
687 
688    • Using ‘\paper { bookpart-level-page-numbering = ##t}’, it is now
689      possible to make bookparts independent with respect to page
690      numbering.  If this is used for all bookparts, each bookpart has
691      its own numbering sequence, starting at 1 by default.  It can also
692      be used in an individual bookpart, which is useful to achieve the
693      standard practice of numbers pages in an analytical introduction
694      independently and in roman numerals (the latter is achieved using
695      ‘page-number-type = #'roman-lower’).
696 
697    • A new grob callback function ‘break-alignment-list’ is now
698      available for returning different values depending on a grob’s
699      break direction.  As an example, use it to provide different
700      alignments of a grob depending on whether it is positioned at the
701      beginning, the middle, or the end of a line.
702 
703 [[image of music]]
704    • The new ‘Mark_performer’ creates MIDI Marker events like
705      ‘Mark_engraver’ creates printed marks.
706 
707    • Properties of ‘PaperColumn’ and ‘NonMusicalPaperColumn’ (such as
708      ‘NonMusicalPaperColumn.line-break-system-details’) can now be
709      overridden mid-music with the usual command ‘\once \override’.
710      They used to be a special case requiring the ‘\overrideProperty’
711      command.
712 
713    • The new ‘show-horizontal-skylines’ and ‘show-vertical-skylines’
714      properties allow to display an object’s skylines.  This is more
715      flexible than the already existing ‘debug-skylines’ option because
716      it works for all grobs.  While primarily meant for debugging
717      LilyPond, this can be useful when trying to understand spacing
718      decisions or overriding stencils in Scheme.
719 
720 [[image of music]]
721    • The new command ‘\vshape’ is like ‘\shape’, but also shows the
722      control points and polygon for easier tweaking.
723 
724           { a1\vshape #'((0 . 0) (0 . 0.5) (0 . 0.9) (0 . 0.4))^( c'1) }
725 [[image of music]]
726    • ‘\markup \path’ now also works in SVG output even if the path does
727      not begin with a ‘moveto’ or ‘rmoveto’ command.  Also, it now
728      accepts single-letter SVG equivalents (‘moveto’ = ‘M’, etc.).
729 
730    • ‘set-default-paper-size’ and ‘set-paper-size’ now accept a custom
731      paper size.
732 
733           #(set-default-paper-size '(cons (* 100 mm) (* 50 mm)))
734 
735    • ‘lilypond-book’ supports two new music fragment options
736      ‘paper-width’ and ‘paper-height’ to set a custom paper size.
737 
738    • ‘lilypond-book’ supports a new snippet option ‘inline’ for inline
739      music, that is, music snippets like [[image of music]] that appear within a paragraph
740      of text.
741 
742    • The ‘lilypond-book’ script now allows braces in the argument of the
743      commands ‘\lilypond’ (for LaTeX) and ‘@lilypond’ (for Texinfo).
744 
745    • ‘lilypond-book’ now appends the current directory as the last entry
746      to search for included files, instead of prepending it to the list
747      of specified include paths.  This allows include directories to
748      shadow files from the current directory, and will only be noticed
749      if there are files with the same name in both.
750 
751    • The new Scheme function ‘universal-color’ provides an eight-element
752      color palette designed to be unambiguous to people with
753      dichromatism.
754 
755 [[image of music]]
756    • The ‘-dembed-source-code’ option now also embeds images added with
757      ‘\epsfile’ and files included with ‘\verbatim-file’.
758 
759    • The default of the ‘aux-files’ program option changed to ‘#f’.  If
760      you are calling LilyPond with the ‘-dbackend=eps’ argument and need
761      the auxiliary ‘.tex’ and ‘.texi’ files, you now have to specify
762      ‘-daux-files’ explicitly.  The formats for ‘lilypond-book’ images
763      can be set separately for the tall page image (typically PNG for
764      HTML output) and per-system images (typically, EPS or PDF for
765      printed output) with the ‘-d’ sub-options ‘-dtall-page-formats’ and
766      ‘-dseparate-page-formats’ respectively.
767 
768    • The ‘big point’ unit (1bp = 1/72in) is now available by appending
769      ‘\bp’ to length values.
770 
771    • Scheme-defined translators usable in both ‘\layout’ and ‘\midi’ can
772      now be created with ‘make-translator’.  Scheme-defined performers
773      usable only in ‘\midi’ can now be created with ‘make-performer’.
774      Those macros work strictly like the previously existing macro
775      ‘make-engraver’ for creating engravers only usable in ‘\layout’.
776 
777    • Scheme translators can now define a new slot called
778      ‘pre-process-music’.  It is called on all translators, after all
779      listeners but before all ‘process-music’ slots.  This can be used
780      for processing that depends on all events heard but needs to set
781      context properties before other translators read them.
782 
783    • Scheme translators can now contain listeners written as
784 
785           (listeners
786            ((event-class engraver event #:once)
787             ...))
788 
789      These are never triggered more than once per time step.  They emit
790      a warning if they receive two events in the same time step, except
791      if the events are equal.
792 
793    • The same grob definition can now be used to create grobs of
794      different classes (‘Item’, ‘Spanner’, ‘Paper_column’, ‘System’).
795      As part of this change, the grob types ‘FootnoteItem’ and
796      ‘FootnoteSpanner’ were consolidated into a single type ‘Footnote’.
797      Similarly, ‘BalloonTextSpanner’ and ‘BalloonTextItem’ are unified
798      into ‘BalloonText’.
799 
800      When the grob definition does not mandate a class, engravers should
801      choose what class to create a grob with.  For authors of Scheme
802      engravers, this means using either ‘ly:engraver-make-item’ or
803      ‘ly:engraver-make-spanner’.  The utility function
804      ‘ly:engraver-make-sticky’ is provided to support the frequent case
805      of _sticky_ grobs, such as footnotes and balloons.  It creates a
806      grob with the same class as another grob and administrates parents
807      and bounds.
808 
809    • The new command-line option ‘-dcompile-scheme-code’, also settable
810      in the LilyPond input with ‘#(ly:set-option 'compile-scheme-code)’,
811      provides with better diagnostics when running Scheme code leads to
812      an error.  Internally, this uses the byte-compiler provided by
813      Guile, instead of the interpreter.
814 
815      However, due to a limitation in Guile, this currently has the
816      disadvantage of making it impossible to run more than a few
817      thousand Scheme expressions.  Also, be aware that the Guile
818      compiler has a few differences to the interpreter.  For example,
819      constant parts of quasiquotes are made actual constants more
820      aggressively, making code such as ‘(let ((x 4)) (sort! `(,x 3 2
821      1)))’ produce an error because the “cdr” of the quasiquoted list is
822      constant, and it is an error in Scheme to mutate literal data.  (In
823      this specific case, the code could avoid the issue by using the
824      non-destructive ‘sort’, or by creating a fresh list each time with
825      ‘(list x 3 2 1)’.)
826 
827      Furthermore, this option does not currently work on Windows.
828 
829 Notes on Guile 2.2
830 ******************
831 
832 This version of LilyPond switches from Guile 1.8 to Guile 2.2.  This
833 section lists some of the most common incompatibilities that you could
834 have to deal with in order to upgrade your Scheme code.
835 
836    A full, detailed log of changes in Guile can be found in the ‘NEWS’
837 file (https://git.savannah.gnu.org/cgit/guile.git/tree/NEWS) of the
838 Guile source.
839 
840    • The ‘format’ function now requires a boolean or port as the first
841      argument.  This argument was optional in Guile 1.8.  In order to
842      make the function return the formatted output as a string, like
843      ‘format’ does without this argument in Guile 1.8, pass ‘#f’ for
844      this argument, i.e., ‘(format #f "STRING" ARGUMENTS ...)’ instead
845      of ‘(format "STRING" ARGUMENTS ...)’.
846 
847    • The rules for internal (i.e., non-toplevel) definitions have become
848      stricter.  Definitions are no longer allowed in various expression
849      contexts.  This is no longer valid, for example:
850 
851           (if (not (defined? 'variable))
852               (define variable 'value))
853 
854      The solution in this particular example is:
855 
856           (define variable
857             (if (not (defined? 'variable))
858                 'value
859                 variable))
860 
861    • Strings now support Unicode characters.  Previously, a Unicode
862      character was represented by several characters, and various
863      functions were not tailored for Unicode support.
864 
865    • Some numeric functions now return exact results in more cases.  For
866      instance, ‘(sqrt 4)’ returns ‘2.0’ in Guile 1.8, but ‘2’ (an
867      integer) in Guile 2.2.
868