1. 13 Aug, 2020 1 commit
  2. 12 Aug, 2020 7 commits
    • Dan Eble's avatar
      Partial_iterator: act where measurePosition is defined · 50b05a6f
      Dan Eble authored
      Partial_iterator no longer has to find the Timing context by name since
      the Timing_translator sets measurePosition.
      Also, the finalization callback is given the timing context so that it
      doesn't have to find it again.
    • Dan Eble's avatar
      Timing_translator: set measurePosition · 67ec0915
      Dan Eble authored
      Let the Timing_translator set measurePosition when it sets
    • Dan Eble's avatar
      Global_context: run init_context () in a timestep · fe924265
      Dan Eble authored
      The effect of this is that all contexts from Score down (i.e. all except
      the Global context) are created in a timestep.  Put another way, the
      creation of a context works the same at the beginning of a piece as in
      the middle.
    • Dan Eble's avatar
    • Dan Eble's avatar
      Spacing_engraver: record now_ in initialize () · 258f65c0
      Dan Eble authored
      This is necessary to support creating the engraver during a timestep
      instead of before the first timestep.
    • Dan Eble's avatar
      Separate iterator creation from context creation · e52f338d
      Dan Eble authored
      create_children () is called immediately after the iterator is created
      and given its music.  Its job is to create child iterators and
      initialize state that does not require context properties.  It needs
      to prepare enough for ok () and pending_moment () to return correct
      initial values.
      create_contexts () does the remaining work: creating contexts for all
      the iterators.
      This will allow moving initial context creation into the first timestep
      after some other issues are addressed.
    • Dan Eble's avatar
      Remove Music_iterator::get_iterator () · ac3bfa72
      Dan Eble authored
      This is a prelude to separating creation of the iterator hierarchy from
      creation of the context hierarchy.
  3. 10 Aug, 2020 11 commits
    • Dan Eble's avatar
      output-distance.py: detect a new grob · becf17a4
      Dan Eble authored
      After checking every grob in the baseline system to see if it has a
      close counterpart in the new system, also perform the reverse check.
    • Han-Wen Nienhuys's avatar
      Move stencil dispatch to C++ · a05517fd
      Han-Wen Nienhuys authored
      This lets us skip outputting an empty string for expressions that are
      not supported
      Timing (MSDM-reduced, 2Ghz CPU):
      Prev commit
      - Guile 1.8: 0.80s
      - Guile 2.2: 1.41s
      - Guile 3.0: 1.20s
      This commit
      - Guile 1.8: 0.45s
      - Guile 2.2: 1.20s
      - Guile 3.0: 1.08s
    • Han-Wen Nienhuys's avatar
    • Han-Wen Nienhuys's avatar
      string-startswith/endswith: avoid creating garbage · 89ffcc24
      Han-Wen Nienhuys authored
      string-startswith/endswith uses the substring function, which must
      copy the underlying bytes to create a fresh, independent string
      object. By using shared strings, we avoid this allocation;
      substring-shared only allocates a double-cell to hold the new pointer
      and offsets.
    • Han-Wen Nienhuys's avatar
    • Han-Wen Nienhuys's avatar
      Dispatch stencil routines using explicit tables · 06ba7f08
      Han-Wen Nienhuys authored
      scm_eval in GUILE became much more elaborate to deal with byte code
      (2.2) and JIT compilation (3.0). This means that scm_eval has more
      overhead for single shot code:
       * setup temporary storage for bytecode/JIT'd x86 code
       * run up and down the syntax tree applying optimizations
       * other magic that compiler folks do to make things run faster
      The Scheme expressions for stencils aren't generalized code; they are
      just a device-independent description of the output. In particular,
      they have no advanced construct (loops, conditionals, tail calls,
      variable bindings, variable references), also, they are run only
      once. So all the work that scm_eval does to produce faster code is
      just overhead.
      The change makes it explicit that the data is just literal data, and
      does the one thing to specialize it from device-independent to
      device-specific, which is replacing symbols with their definitions
      from output-ps.scm
      Because output expression do not pass through eval anymore, we stop
      quoting symbol and list values.
      Backend implementors should take the following changes into account:
      * placebox is removed. Instead each stencil expression is surrounded
        by settranslation and resettranslation
      * ly:make-paper-outputter takes a single function as argument. The
        function takes the Scheme expression, for example,
           (circle 10 0.1 #t)
        as argument.
      * A paper-outputter no longer is associated with a module. For the SVG
        backend, this is solved by creating some backend-specific
        expressions (set-paper, set-unit-length) which the eval-svg function
        treats specially.
      Markup/stencil implementors should take the following changes into
      * Stencil expressions are no longer passed through the eval
        function. This means that all inner (quasi)quoting should be
        lilypond -dbackend=svg input/regression/les-nereides
      In verbose mode, the backend output phase will print timing. This
      timing leads to the following data for (MSDM-reduced, 2Ghz CPU):
      Current master
      - Guile 1.8: 0.74s
      - Guile 2.2: 4.73s
      - Guile 3.0: 2.49s
      This commit
      - Guile 1.8: 0.80s
      - Guile 2.2: 1.41s
      - Guile 3.0: 1.20s
    • Han-Wen Nienhuys's avatar
    • Han-Wen Nienhuys's avatar
      Remove port encoding tweak from paper-outputter-scheme.cc · c6d91c20
      Han-Wen Nienhuys authored
      The Scheme code already does this in framework-ps.scm
    • Han-Wen Nienhuys's avatar
      Remove backend-testing · 358fe5fc
      Han-Wen Nienhuys authored
      This code verifies that a given backend (PS, SVG) implements all
      stencil routines. This breaks so rarely that it is not worth having
      test infrastructure for
    • Han-Wen Nienhuys's avatar
      Add snippets.tely for DE, ES, FR, IT, JA · f195919d
      Han-Wen Nienhuys authored
      The directories ${LANG}/texidocs/ provide translations of the snippets
      doc strings, but these have been unused so far.
    • Thomas Morley's avatar
      Fix draw-thick-zero-fret in fret-diagrams.scm · 19c46c30
      Thomas Morley authored
      In 2.20.0 the thickness of lowest string was not scaled. Thus a visible
      gap occured with increased size.  Evan bigger with additional increased
      string-thickness-factor.  The regtest fret-diagrams-string-thickness.ly
      did not cover this case, thus it was not detected with
      8441002b Major cleanup in fret-diagrams.scm
      Which made things worse in this regard.
      This patches uses scaled thickness to fix the problem and extends
      input/regression/fret-diagrams-string-thickness.ly to cover it.
  4. 09 Aug, 2020 3 commits
  5. 08 Aug, 2020 3 commits
  6. 07 Aug, 2020 1 commit
    • John Lemcke's avatar
      musicxml2ly: Enable the '--no-rest-positions' option · 59cb6bac
      John Lemcke authored
      The --no-rest-positions option to musicxml2ly currently has no
      effect. This patch enables that option.
      After applying this patch the output of
      musicxml2ly --no-rest-positions input/regression/musicxml/02b-Rests-PitchedRests.xml
      should not contain any \rest entries.
  7. 06 Aug, 2020 4 commits
    • Werner Lemberg's avatar
      lily.scm: reformat `-dhelp` output · ef9e6ed8
      Werner Lemberg authored
      Follow the advice given in the file that help strings shouldn't be longer
      than 48 characters per line.
      Also make list of options more compact and improve some option descriptions.
    • Han-Wen Nienhuys's avatar
      Remove "socket" backend · e16a5eca
      Han-Wen Nienhuys authored
      The 'socket' backend was written in 2005 as counterpart for Ikebana,
      an interactive interface for LilyPond, built as a as a technology demo
      for a commercial sequencer vendor (was it cakewalk?) of how to use
      LilyPond as an external notation server.
      It has also been used for Schikkers List, which has also not taken off
    • Thomas Morley's avatar
      Ensure string for ps-quote in dump-pdf-bookmarks · 5c0b6b94
      Thomas Morley authored
      As of 88fced68 'outline-bookmarks
      is now always #t. Though, the relevant entry of the toc-alist may
      not be a string, but a formatted markup.
      Applies markup->string to fix this situation.
        \markuplist \table-of-contents
        { \tocItem \markup \underline "xy" R1 }
      Extends input/regression/toc-structered.ly to cover it.
      Comment about issue 5999 no longer applies, as it is fixed now.
    • Tim Starling's avatar
      Fix iteration in Tie_performer::acknowledge_audio_element · b04f91b4
      Tim Starling authored
      If you compile LilyPond with -D_GLIBCXX_DEBUG, it aborts during "make
      test" in this function, because it is invalid to increment an iterator
      which is already at the end.
      After erasing an element from the list, just return, instead of setting a
      found flag which will exit the loop.
  8. 05 Aug, 2020 6 commits
  9. 04 Aug, 2020 4 commits
    • Han-Wen Nienhuys's avatar
      Inline abc make rules · aa5a6f0e
      Han-Wen Nienhuys authored
    • Han-Wen Nienhuys's avatar
      Remove '@' from echo from lysdoc rules · 2239687c
      Han-Wen Nienhuys authored
      The VERBOSE=x mechanism generically hides commands already.
    • Han-Wen Nienhuys's avatar
      Merge branch 'doc-build' · 82d72b74
      Han-Wen Nienhuys authored
      This side branch includes commits for which the doc will not build
    • Han-Wen Nienhuys's avatar
      Support building just the website · 4abf0102
      Han-Wen Nienhuys authored
      This target uses the 'offline' flavor generating internal
      links. Paradoxically, this is more similar to what is used on
      This target leaves a tree under out/website-root/ which corresponds to
      the website as it is served on lilypond.org. There are some differences:
      * the browser language link is localized
      * Google Analytics is removed
      * the Chinese windows page looks less odd than
        http://lilypond.org/windows.zh.html (this page somehow mixes the
        "source" and "old-downloads" pages in divs behind the main content;
        this is likely caused by a missing lilypond-texi2html-lang-init option)