+@noindent
+With the new @code{\beamExceptions} scheme function, this becomes:
+
+@lilypond[verbatim,quote,relative=1]
+\set Timing.beamExceptions =
+ \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
+
+\time #'(2 1) 3/16
+c16 c c |
+\repeat unfold 6 { c32 } |
+@end lilypond
+
+@noindent
+with multiple exceptions separated by bar checks. Note that writing the
+exception pattern without pitches is convenient but not mandatory (also
+see the previous documented rhythm improvement --
+@ruser{Isolated durations in music now stand for unpitched notes}.
+
+@item
+The positioning of tuplet numbers for kneed beams has been improved.
+Previously, tuplet numbers were placed according to the position of the
+tuplet bracket, even if the bracket was not printed. This could lead to
+tuplet numbers being @q{stranded}.
+
+@noindent
+Previously:
+
+@lilypond[fragment,quote,relative=1]
+% This is a contrived example to simulate the previous behaviour
+\time 3/4
+\override Beam.auto-knee-gap = 3
+\override TupletNumber.knee-to-beam = ##f
+\once \override TupletBracket.bracket-visibility = ##t
+\tuplet 3/2 4 { g8 c'' e, }
+\tuplet 3/2 4 { g,,8 c'' e, }
+\once \override TupletBracket.bracket-visibility = ##t
+\tuplet 3/2 4 { c'8 g,, e'' }
+\tuplet 3/2 4 { c'8 g,, e'' }
+\once \override TupletBracket.bracket-visibility = ##t
+\tuplet 2/2 4 { g,8[ e''] }
+\tuplet 2/2 4 { g,,8[ e''] }
+@end lilypond
+
+@noindent
+Now, when the bracket is not drawn, tuplet numbers are positioned
+closer.
+
+@lilypond[fragment,quote,relative=1]
+% This is a contrived example to simulate the previous behaviour
+\time 3/4
+\override Beam.auto-knee-gap = 3
+\override TupletBracket.bracket-visibility = ##t
+\tuplet 3/2 4 { g8 c'' e, }
+\once \override TupletBracket.bracket-visibility = ##f
+\tuplet 3/2 4 { g,,8 c'' e, }
+\tuplet 3/2 4 { c'8 g,, e'' }
+\once \override TupletBracket.bracket-visibility = ##f
+\tuplet 3/2 4 { c'8 g,, e'' }
+\tuplet 2/2 4 { g,8[ e''] }
+\once \override TupletBracket.bracket-visibility = ##f
+\tuplet 2/2 4 { g,,8[ e''] }
+@end lilypond
+
+@item
+Collision detection for the kneed beam tuplet numbers has also been
+added, shifting the offset horizontally if the number is too close to
+an adjoining note column (but still preserving the number's vertical
+distance). In the event of a collision -- for example with an
+accidental -- the tuplet number will be shifted vertically instead. If
+the tuplet number is itself too large to fit within the available space,
+the original, @q{bracket-based}, positioning system will be used
+instead.
+
+@lilypond[fragment,quote,relative=1]
+\time 2/4
+\override Beam.auto-knee-gap = 3
+\tuplet 3/2 4 { g8 c'' e, c'8 g,, e'' }
+\tuplet 3/2 4 { g,,8 e''' g,, g,8 e''' ges,, }
+@end lilypond
+
+@noindent
+The original kneed-beam tuplet behavior is still available with a new,
+@code{knee-to-beam} property for the @code{TupletNumber} layout object.
+
+@lilypond[verbatim,fragment,quote,relative=1]
+\time 2/4
+\override Beam.auto-knee-gap = 3
+\override TupletNumber.knee-to-beam = ##f
+\override TupletBracket.bracket-visibility = ##t
+\tuplet 3/2 4 { g8 c'' e, }
+\once \override TupletBracket.bracket-visibility = ##f
+\tuplet 3/2 4 { g,,8 c'' e, }
+@end lilypond
+
+@end itemize
+
+
+@strong{Expressive mark improvements}
+
+@itemize
+
+@item
+The ends of hairpins may now be fine-tuned using the @code{shorten-pair}
+grob property. This previously only affected text-spanners (e.g.
+@code{TupletBracket} and @code{OttavaBracket}).
+
+@noindent
+Positive and negative values offset right and left respectively.
+
+@lilypond[quote,verbatim,relative=2]
+\once \override Hairpin.shorten-pair = #'(0 . 2)
+a1\< | a2 a\!
+
+\once \override Hairpin.shorten-pair = #'(2 . 0)
+\once \override Hairpin.stencil = #constante-hairpin
+a1\< | a2 a\!
+
+\once \override Hairpin.shorten-pair = #'(-1 . -1)
+\once \override Hairpin.stencil = #flared-hairpin
+a1\< | a2 a\!
+@end lilypond
+
+@item
+Individual slurs and phrasing slurs may now be started from an explicit
+note within a chord.
+
+@lilypond[quote,verbatim,relative=1]
+<f a( c>1 | <c') e g(> | <a c) e>
+@end lilypond
+
+@lilypond[quote,verbatim,relative=1]
+<f( a\( c>1 | <c'\) e\( g> | <a c e\)>
+@end lilypond
+
+@item
+A new command @code{\=X} has been added -- where @q{X} can be any
+non-negative integer or symbol -- so that a specific @q{id} can be
+assigned to the start and end of slurs and phrasing slurs.
+
+@noindent
+This is useful when simultaneous slurs are required or if one slur
+overlaps another or when nesting short slurs within a longer one.
+
+@lilypond[quote,verbatim,relative=2]
+<a c e\=7\(>1 | <g b d\=£(> |
+<f\=A( a c\="foo"(> | <c'\="foo")\=A) e\=£) g\=7\)> |
+@end lilypond
+
+@noindent
+Also see @ruser{Expressive marks as curves}.
+
+@end itemize
+
+
+@strong{Repeat notation improvements}
+
+@itemize
+
+@item
+The visual style of tremolo slashes (shape, style and slope)
+is now more finely controlled.
+@lilypond[quote,relative=2]
+ a8:32 b: c: d:
+ \override StemTremolo.shape = #'beam-like
+ a: b: c: d:
+ \override StemTremolo.style = #'constant
+ a: b: c: d:
+ g,2
+@end lilypond
+
+@item
+The music function @code{\unfoldRepeats} can now take an
+optional argument-list specifying which type(s) of repeated music
+should be unfolded. Possible entries are @code{percent}, @code{tremolo},
+@code{volta}.
+If the optional argument-list is unspecified, @code{repeated-music} will be
+used, unfolding all.
+
+@end itemize
+
+
+@strong{Staff notation improvements}
+
+@itemize
+
+@item
+A new command @code{\magnifyStaff} has been added which scales staff
+sizes, staff lines, bar lines, beamlets and horizontal spacing generally
+at the @code{Staff} context level. Staff lines are prevented from being
+scaled smaller than the default since the thickness of stems, slurs, and
+the like are all based on the staff line thickness.
+
+@item
+A new command @code{\magnifyMusic} has been added, which allows
+the notation size to be changed without changing the staff size,
+while automatically scaling stems, beams, and horizontal spacing.
+
+@lilypond[verbatim,quote]
+\new Staff <<
+ \new Voice \relative {
+ \voiceOne
+ <e' e'>4 <f f'>8. <g g'>16 <f f'>8 <e e'>4 r8
+ }
+ \new Voice \relative {
+ \voiceTwo
+ \magnifyMusic 0.63 {
+ \override Score.SpacingSpanner.spacing-increment = #(* 1.2 0.63)
+ r32 c'' a c a c a c r c a c a c a c
+ r c a c a c a c a c a c a c a c
+ }