Re: GUILE 2.2 progress

2020-01-25 Thread Han-Wen Nienhuys
On Sat, Jan 25, 2020 at 8:16 PM David Kastrup  wrote:
> > $ gs -q -dSAFER -dDEVICEWIDTHPOINTS=595.28 -dDEVICEHEIGHTPOINTS=841.89
> > -dCompatibilityLevel=1.4 -dNOPAUSE -dBATCH -r1200 -sDEVICE=pdfwrite
> > -dAutoRotatePages=/None -dPrinted=false -sOutputFile=mozart-hrn-3.pdf
> > -c.setpdfwrite -f/tmp/lilypond-OCyOzh
> > Error: /rangecheck in /--.parsecff--
> > Operand stack:
> >false   --nostringval--
>
> Pretty sure this is an encoding problem.

the question is how this managed to work on GUILE 2.0. We're embedding
the OTF/CFF font (which is binary data) into a string without
considering any encoding. The string then gets dumped onto the PS
file.

-- 
Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen



Re: GUILE 2.2 progress

2020-01-25 Thread David Kastrup
Han-Wen Nienhuys  writes:

> On Sat, Jan 25, 2020 at 3:50 PM David Kastrup  wrote:
>> > That patch is papering over a problem rather than fixing it.  It might
>> > be a reoccurence of something like
>> >
>> > commit c01a2a757e3c59727bdfa8d77568bf42525fbe05
>> > Author: Andy Wingo 
>> > Date:   Thu Jun 23 11:47:42 2016 +0200
>> >
>> > Fix race between SMOB marking and finalization
>> >
>> > * libguile/smob.c (clear_smobnum): New helper.
>> >   (finalize_smob): Re-set the smobnum to the "finalized smob" type
>> >   before finalizing.  Fixes #19883.
>> >   (scm_smob_prehistory): Pre-register a "finalized smob" type, which 
>> > has
>> >   no mark procedure.
>> > * test-suite/standalone/test-smob-mark-race.c: New file.
>> > * test-suite/standalone/Makefile.am: Arrange to build and run the new
>> >   test.
>>
>> Actually, you may also be missing
>> commit c9910c604279f438728cd268272e1839cbc53835
>> Author: Andy Wingo 
>> Date:   Mon Mar 13 15:47:51 2017 +0100
>
> It must have been another one, v2.2.6 doesn't have the problem anymore, but
>
> [hanwen@localhost guile]$ git describe --contains
> c9910c604279f438728cd268272e1839cbc53835
> v2.2.0~11
> [hanwen@localhost guile]$ git describe --contains
> c01a2a757e3c59727bdfa8d77568bf42525fbe05
> v2.1.4~111

Ok, sorry.  So they managed to get and fix more problems.  Basically
your patch replaces malloc/free with a version that does not bother
complaining about multiple freeing.  But I cannot vouch for our
destructors being executable multiple times, so that "fix" is really
asking for trouble.

> I still get
>
> input/regression/mozart-hrn-3.ly:31:9: error: not a markup
>
> #(string-append  "It has been typeset and placed in the public "

Frankly, that one looks like a nightmare that should not happen.  Does
it say the same for, say, #"just a string" ?  And "just a string"
(without hash mark)?

> and
>
> $ gs -q -dSAFER -dDEVICEWIDTHPOINTS=595.28 -dDEVICEHEIGHTPOINTS=841.89
> -dCompatibilityLevel=1.4 -dNOPAUSE -dBATCH -r1200 -sDEVICE=pdfwrite
> -dAutoRotatePages=/None -dPrinted=false -sOutputFile=mozart-hrn-3.pdf
> -c.setpdfwrite -f/tmp/lilypond-OCyOzh
> Error: /rangecheck in /--.parsecff--
> Operand stack:
>false   --nostringval--

Pretty sure this is an encoding problem.

>
> those look fixable, though.

-- 
David Kastrup



Some py3 fixes (issue 553430047 by hanw...@gmail.com)

2020-01-25 Thread lemzwerg--- via Discussions on LilyPond development
LGTM


https://codereview.appspot.com/553430047/diff/573430051/python/lilylib.py
File python/lilylib.py (right):

https://codereview.appspot.com/553430047/diff/573430051/python/lilylib.py#newcode257
python/lilylib.py:257: sys.stderr.write('command failed: %s\n' % cmd)
With space before the '(' or without?

https://codereview.appspot.com/553430047/



Re: GUILE 2.2 progress

2020-01-25 Thread Han-Wen Nienhuys
On Sat, Jan 25, 2020 at 3:50 PM David Kastrup  wrote:
> > That patch is papering over a problem rather than fixing it.  It might
> > be a reoccurence of something like
> >
> > commit c01a2a757e3c59727bdfa8d77568bf42525fbe05
> > Author: Andy Wingo 
> > Date:   Thu Jun 23 11:47:42 2016 +0200
> >
> > Fix race between SMOB marking and finalization
> >
> > * libguile/smob.c (clear_smobnum): New helper.
> >   (finalize_smob): Re-set the smobnum to the "finalized smob" type
> >   before finalizing.  Fixes #19883.
> >   (scm_smob_prehistory): Pre-register a "finalized smob" type, which has
> >   no mark procedure.
> > * test-suite/standalone/test-smob-mark-race.c: New file.
> > * test-suite/standalone/Makefile.am: Arrange to build and run the new
> >   test.
>
> Actually, you may also be missing
> commit c9910c604279f438728cd268272e1839cbc53835
> Author: Andy Wingo 
> Date:   Mon Mar 13 15:47:51 2017 +0100

It must have been another one, v2.2.6 doesn't have the problem anymore, but

[hanwen@localhost guile]$ git describe --contains
c9910c604279f438728cd268272e1839cbc53835
v2.2.0~11
[hanwen@localhost guile]$ git describe --contains
c01a2a757e3c59727bdfa8d77568bf42525fbe05
v2.1.4~111

I still get

input/regression/mozart-hrn-3.ly:31:9: error: not a markup

#(string-append  "It has been typeset and placed in the public "

and

$ gs -q -dSAFER -dDEVICEWIDTHPOINTS=595.28 -dDEVICEHEIGHTPOINTS=841.89
-dCompatibilityLevel=1.4 -dNOPAUSE -dBATCH -r1200 -sDEVICE=pdfwrite
-dAutoRotatePages=/None -dPrinted=false -sOutputFile=mozart-hrn-3.pdf
-c.setpdfwrite -f/tmp/lilypond-OCyOzh
Error: /rangecheck in /--.parsecff--
Operand stack:
   false   --nostringval--

those look fixable, though.

-- 
Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen



Re: Issue XXXX: Dot_configuration maintenance (issue 577380046 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread Han-Wen Nienhuys
On Sat, Jan 25, 2020 at 7:37 PM  wrote:
>
> On 2020/01/25 18:24:32, hanwenn wrote:
> >
> https://codereview.appspot.com/577380046/diff/553430046/lily/dot-configuration.cc
> > File lily/dot-configuration.cc (right):
> >
> >
> https://codereview.appspot.com/577380046/diff/553430046/lily/dot-configuration.cc#newcode69
> > lily/dot-configuration.cc:69: auto process_entry = [d, k, _cfg,
> > ](const value_type )
> > what does this syntax do?
>
> https://en.cppreference.com/w/cpp/language/lambda
>
> It defines a function named "process_entry" taking one argument (const
> value_type &).  The body of the function can access variables d and k by
> value, and variables new_cfg and offset by reference.  I think "this"
> might also be captured implicitly in this context, but I'd have to go to
> the documentation to refresh my memory.
>
> An alternative to using a lambda would be to move this stuff to a
> private member function, or maybe a static function in this file.

Thanks for the explanation!

-- 
Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen



Re: Issue XXXX: Dot_configuration maintenance (issue 577380046 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread nine . fierce . ballads
On 2020/01/25 18:24:32, hanwenn wrote:
>
https://codereview.appspot.com/577380046/diff/553430046/lily/dot-configuration.cc
> File lily/dot-configuration.cc (right):
> 
>
https://codereview.appspot.com/577380046/diff/553430046/lily/dot-configuration.cc#newcode69
> lily/dot-configuration.cc:69: auto process_entry = [d, k, _cfg,
> ](const value_type )
> what does this syntax do?

https://en.cppreference.com/w/cpp/language/lambda

It defines a function named "process_entry" taking one argument (const
value_type &).  The body of the function can access variables d and k by
value, and variables new_cfg and offset by reference.  I think "this"
might also be captured implicitly in this context, but I'd have to go to
the documentation to refresh my memory.

An alternative to using a lambda would be to move this stuff to a
private member function, or maybe a static function in this file.


https://codereview.appspot.com/577380046/



python/langdefs: make print statement py3 compatible (issue 573440043 by hanw...@gmail.com)

2020-01-25 Thread lemzwerg--- via Discussions on LilyPond development
LGTM

https://codereview.appspot.com/573440043/



Re: Issue XXXX: Dot_configuration maintenance (issue 577380046 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread hanwenn


https://codereview.appspot.com/577380046/diff/553430046/lily/dot-configuration.cc
File lily/dot-configuration.cc (right):

https://codereview.appspot.com/577380046/diff/553430046/lily/dot-configuration.cc#newcode69
lily/dot-configuration.cc:69: auto process_entry = [d, k, _cfg,
](const value_type )
what does this syntax do?

https://codereview.appspot.com/577380046/



Re: EXPERIMENTAL: put a reminder of the mm rest on the last page at the top. (issue 553400043 by hanw...@gmail.com)

2020-01-25 Thread Han-Wen Nienhuys
On Sat, Jan 25, 2020 at 3:57 PM  wrote:
> > I'm not asking for anyone to review. It's context to the other change
> about
> > multi-measure-rests.
>
> OIC.  An MMR reminder sounds interesting.  Does the problem tie in with
> others like repeating the current chord name after a page break?
>
> https://codereview.appspot.com/553400043/

I think you could build that in a similar fashion, yes.

-- 
Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen



Re: Issue 5695: reduce dynamic casting (issue 575530107 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread dak


https://codereview.appspot.com/575530107/diff/581530050/lily/spaceable-grob.cc
File lily/spaceable-grob.cc (right):

https://codereview.appspot.com/575530107/diff/581530050/lily/spaceable-grob.cc#newcode92
lily/spaceable-grob.cc:92: break;
That looks still too complicated.  Just do return *next_spring; here, no
need to break out of the loop.  Then you don't need the variable spring
at all (since it will be 0 if the loop exits regularly) and can hijack
its name for the more cumbersome next_spring.  And the final return can
just be return Spring ();

Oh, and the programming_error can be called unconditionally then.

https://codereview.appspot.com/575530107/



Issue 5695: reduce dynamic casting (issue 575530107 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread nine . fierce . ballads
Reviewers: ,

Description:
https://sourceforge.net/p/testlilyissues/issues/5695/

Here are a few miscellaneous things that I've been holding onto for a
while because they would have been out of context in other reviews. 
Each file is in a separate commit, though they're squashed in this
review.

1: defer dynamic_cast in Tie_column::add_tie
2: reduce unsmobbing in Spaceable_grob::get_spring
3: reduce unsmobbing in Paper_column::is_musical

Please review this at https://codereview.appspot.com/575530107/

Affected files (+14, -11 lines):
  M lily/paper-column.cc
  M lily/spaceable-grob.cc
  M lily/tie-column.cc


Index: lily/paper-column.cc
diff --git a/lily/paper-column.cc b/lily/paper-column.cc
index 
6fc65f27614e3c16cdf63766ee3642514b0afea6..7f17dbf8909dba3406ebd375dd1839c5b637e6c9
 100644
--- a/lily/paper-column.cc
+++ b/lily/paper-column.cc
@@ -108,10 +108,9 @@ bool
 Paper_column::is_musical (Grob *me)
 {
   SCM m = me->get_property ("shortest-starter-duration");
-  Moment s (0);
-  if (unsmob (m))
-s = *unsmob (m);
-  return s != Moment (0);
+  if (Moment *s = unsmob (m))
+return *s != Moment (0);
+  return false;
 }
 
 bool
Index: lily/spaceable-grob.cc
diff --git a/lily/spaceable-grob.cc b/lily/spaceable-grob.cc
index 
dae8db19c81726f9f2dd2d6039e1e230ad1cb358..95b7d10877753bd2c522c5646389b6e3eae6f2d3
 100644
--- a/lily/spaceable-grob.cc
+++ b/lily/spaceable-grob.cc
@@ -81,13 +81,17 @@ Spaceable_grob::get_spring (Paper_column *this_col, Grob 
*next_col)
   Spring *spring = 0;
 
   for (SCM s = this_col->get_object ("ideal-distances");
-   !spring && scm_is_pair (s);
-   s = scm_cdr (s))
+   scm_is_pair (s); s = scm_cdr (s))
 {
   if (scm_is_pair (scm_car (s))
-  && unsmob (scm_cdar (s)) == next_col
-  && unsmob (scm_caar (s)))
-spring = unsmob (scm_caar (s));
+  && unsmob (scm_cdar (s)) == next_col)
+{
+  if (Spring *next_spring = unsmob (scm_caar (s)))
+{
+  spring = next_spring;
+  break;
+}
+}
 }
 
   if (!spring)
Index: lily/tie-column.cc
diff --git a/lily/tie-column.cc b/lily/tie-column.cc
index 
c3e4ec6068da02d86484217820ea884a759dcaf2..4c1b2d504f0c4b35b4046634b091b1c3fa79e56b
 100644
--- a/lily/tie-column.cc
+++ b/lily/tie-column.cc
@@ -37,12 +37,12 @@ using std::vector;
 void
 Tie_column::add_tie (Grob *tc, Spanner *tie)
 {
-  Spanner *me = dynamic_cast (tc);
-
   if (tie->get_parent (Y_AXIS)
   && has_interface (tie->get_parent (Y_AXIS)))
 return;
 
+  // TODO: Change to a Spanner in the function signature.
+  Spanner *me = dynamic_cast (tc);
   if (!me->get_bound (LEFT)
   || (me->get_bound (LEFT)->get_column ()->get_rank ()
   > tie->get_bound (LEFT)->get_column ()->get_rank ()))





Re: Issue XXXX: Dot_configuration maintenance (issue 577380046 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread nine . fierce . ballads
https://codereview.appspot.com/577380046/



Doc: Corrected doc string for ly:dimension? (issue 547470049 by davidgrant...@gmail.com)

2020-01-25 Thread davidgrant . no
Reviewers: ,

Message:
It isn't clear to me how a dimension is different from a normal number,
but the current doc string seems to be incorrect all the same.

Description:
Doc: Corrected doc string for ly:dimension?

ly:dimension? is a predicate - it does not return a number.

Please review this at https://codereview.appspot.com/547470049/

Affected files (+1, -1 lines):
  M lily/general-scheme.cc


Index: lily/general-scheme.cc
diff --git a/lily/general-scheme.cc b/lily/general-scheme.cc
index 
629c85ccaa7483d542d16d54e548279d2a401483..3cad1775d2754768aa3b39f7608f5b83f0d4316e
 100644
--- a/lily/general-scheme.cc
+++ b/lily/general-scheme.cc
@@ -260,7 +260,7 @@ LY_DEFINE (ly_unit, "ly:unit", 0, 0, 0, (),
 }
 
 LY_DEFINE (ly_dimension_p, "ly:dimension?", 1, 0, 0, (SCM d),
-   "Return @var{d} as a number.  Used to distinguish length"
+   "Is @var{d} a dimension?  Used to distinguish length"
" variables from normal numbers.")
 {
   return scm_number_p (d);





Re: EXPERIMENTAL: put a reminder of the mm rest on the last page at the top. (issue 553400043 by hanw...@gmail.com)

2020-01-25 Thread nine . fierce . ballads
On 2020/01/24 19:29:56, hanwenn wrote:
> I'm not asking for anyone to review. It's context to the other change
about
> multi-measure-rests.

OIC.  An MMR reminder sounds interesting.  Does the problem tie in with
others like repeating the current chord name after a page break?


https://codereview.appspot.com/553400043/



Re: GUILE 2.2 progress

2020-01-25 Thread David Kastrup
David Kastrup  writes:

> Han-Wen Nienhuys  writes:
>
>> With https://codereview.appspot.com/551390047/
>
> That patch is papering over a problem rather than fixing it.  It might
> be a reoccurence of something like
>
> commit c01a2a757e3c59727bdfa8d77568bf42525fbe05
> Author: Andy Wingo 
> Date:   Thu Jun 23 11:47:42 2016 +0200
>
> Fix race between SMOB marking and finalization
> 
> * libguile/smob.c (clear_smobnum): New helper.
>   (finalize_smob): Re-set the smobnum to the "finalized smob" type
>   before finalizing.  Fixes #19883.
>   (scm_smob_prehistory): Pre-register a "finalized smob" type, which has
>   no mark procedure.
> * test-suite/standalone/test-smob-mark-race.c: New file.
> * test-suite/standalone/Makefile.am: Arrange to build and run the new
>   test.

Actually, you may also be missing
commit c9910c604279f438728cd268272e1839cbc53835
Author: Andy Wingo 
Date:   Mon Mar 13 15:47:51 2017 +0100

Fix finalizer resuscitation causing excessive GC

* libguile/finalizers.c (async_gc_finalizer):
  (scm_i_register_async_gc_callback): Replace "weak gc callback"
  mechanism with "async gc callback" mechanism.  Very similar but the
  new API is designed to be called a bounded number of times, to avoid
  running afoul of libgc heuristics.
* libguile/weak-list.h: New internal header.
* libguile/Makefile.am (noinst_HEADERS): Add weak-list.h.
* libguile/weak-set.c (vacuum_all_weak_sets):
  (scm_c_make_weak_set, scm_init_weak_set):
* libguile/weak-table.c (vacuum_all_weak_tables):
  (scm_c_make_weak_table, scm_init_weak_table): Arrange to vacuum all
  weak sets from a single async GC callback, and likewise for weak
  tables.

Thanks to Ludovic Courtès for tracking this bug down!


in the version you have been using.  That one looks like it could cause
trouble as well.

-- 
David Kastrup



Re: GUILE 2.2 progress

2020-01-25 Thread David Kastrup
Jonas Hahnfeld  writes:

> Am Samstag, den 25.01.2020, 15:26 +0100 schrieb David Kastrup:
>> Jonas Hahnfeld via Discussions on LilyPond development
>> <
>> lilypond-devel@gnu.org
>> > writes:
>> 
>> > Am Samstag, den 25.01.2020, 14:45 +0100 schrieb Thomas Morley:
>> > > Am Sa., 25. Jan. 2020 um 13:48 Uhr schrieb Han-Wen Nienhuys <
>> > > hanw...@gmail.com
>> > > 
>> > > > :
>> > > > [...]
>> > > > I think it is clear that we should not be targeting GUILE 2.0, but 
>> > > > GUILE 2.2.
>> > > 
>> > > I dropped any work for guile-2.0 long ago.
>> > > For me it's more the question whether we should entirely skip guile-2,
>> > > going for guile-3 directly.
>> > 
>> > My 2 cents: Guile 3.0 was only released very recently, it's not even
>> > available in rolling release distributions like Arch Linux. Most
>> > certainly it will not be part of the upcoming Ubuntu 20.04 release?
>> > Requiring Guile 2.2 would exclude (vanilla) Ubuntu 16.04 and CentOS 7
>> > which I think would be acceptable for master and future major versions
>> > of LilyPond.
>> 
>> 16.04 is all very nice, but relying on non-updated legacy systems for
>> proscribing the dependencies of a hot-of-the-presses release is not
>> providing much of value.
>
> me: "which I think would be acceptable for master and future major
> versions" ?!?

Ah, "which" is supposed to refer to "would exclude" rather than "Ubuntu
16.04 and CentOS 7".  I thought you wanted to avoid excluding the
acceptable listed versions.  I probably would have understood had you
written:

Requiring Guile 2.2 would exclude (vanilla) Ubuntu 16.04 and CentOS
7.  I think that should be acceptable for master and future major
versions of LilyPond.

Sorry for the confusion.

> Also I'm not proscribing anything, it was just a list of what would be
> lost.

I now get it.

-- 
David Kastrup



Re: GUILE 2.2 progress

2020-01-25 Thread Jonas Hahnfeld via Discussions on LilyPond development
Am Samstag, den 25.01.2020, 15:26 +0100 schrieb David Kastrup:
> Jonas Hahnfeld via Discussions on LilyPond development
> <
> lilypond-devel@gnu.org
> > writes:
> 
> > Am Samstag, den 25.01.2020, 14:45 +0100 schrieb Thomas Morley:
> > > Am Sa., 25. Jan. 2020 um 13:48 Uhr schrieb Han-Wen Nienhuys <
> > > hanw...@gmail.com
> > > 
> > > > :
> > > > [...]
> > > > I think it is clear that we should not be targeting GUILE 2.0, but 
> > > > GUILE 2.2.
> > > 
> > > I dropped any work for guile-2.0 long ago.
> > > For me it's more the question whether we should entirely skip guile-2,
> > > going for guile-3 directly.
> > 
> > My 2 cents: Guile 3.0 was only released very recently, it's not even
> > available in rolling release distributions like Arch Linux. Most
> > certainly it will not be part of the upcoming Ubuntu 20.04 release?
> > Requiring Guile 2.2 would exclude (vanilla) Ubuntu 16.04 and CentOS 7
> > which I think would be acceptable for master and future major versions
> > of LilyPond.
> 
> 16.04 is all very nice, but relying on non-updated legacy systems for
> proscribing the dependencies of a hot-of-the-presses release is not
> providing much of value.

me: "which I think would be acceptable for master and future major
versions" ?!?

Also I'm not proscribing anything, it was just a list of what would be
lost.

Jonas


signature.asc
Description: This is a digitally signed message part


Re: GUILE 2.2 progress

2020-01-25 Thread David Kastrup
Jonas Hahnfeld via Discussions on LilyPond development
 writes:

> Am Samstag, den 25.01.2020, 14:45 +0100 schrieb Thomas Morley:
>> Am Sa., 25. Jan. 2020 um 13:48 Uhr schrieb Han-Wen Nienhuys <
>> hanw...@gmail.com
>> >:
>> > [...]
>> > I think it is clear that we should not be targeting GUILE 2.0, but GUILE 
>> > 2.2.
>> 
>> I dropped any work for guile-2.0 long ago.
>> For me it's more the question whether we should entirely skip guile-2,
>> going for guile-3 directly.
>
> My 2 cents: Guile 3.0 was only released very recently, it's not even
> available in rolling release distributions like Arch Linux. Most
> certainly it will not be part of the upcoming Ubuntu 20.04 release?
> Requiring Guile 2.2 would exclude (vanilla) Ubuntu 16.04 and CentOS 7
> which I think would be acceptable for master and future major versions
> of LilyPond.

16.04 is all very nice, but relying on non-updated legacy systems for
proscribing the dependencies of a hot-of-the-presses release is not
providing much of value.

-- 
David Kastrup



Re: Issue 4550: Avoid "using namespace std; " in included files (Take 2) (issue 579240043 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread Jonas Hahnfeld
Am Samstag, den 25.01.2020, 14:01 +0100 schrieb Han-Wen Nienhuys:
> I've pushed all my local branches to
> https://github.com/hanwen/lilypond
>  , which make the rebasing and such
> easier.
> 
> How does the pushing process go? Even though I am busy, maybe Jonas is
> right that it's easier for everyone if I push directly.

I mean everyone is busy...

The process is here: 
http://lilypond.org/doc/v2.19/Documentation/contributor/pushing-to-staging
In short, go to the branch with the commit to push, rebase it to
origin/staging and then $ git push origin HEAD:staging. I myself
usually do a $ git push -n origin HEAD:staging first (dry-run) and
check that it's indeed the commits that counted down...

Jonas


signature.asc
Description: This is a digitally signed message part


Re: Issue 4550: Avoid "using namespace std; " in included files (Take 2) (issue 579240043 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread David Kastrup
Dan Eble  writes:

> On Jan 25, 2020, at 07:26, David Kastrup  wrote:
>> 
>> -  Interval hex = head->extent (common_[X_AXIS], X_AXIS);
>> +  Interval head_ext = head->extent (common_[X_AXIS], X_AXIS);
> ...
>> 
>> That last part applies part of a patch from an unrelated issue of
>> Han-Wen.  Please don't do stuff like that, if necessary using
>
> It does not apply a patch from Han-Wen.  It necessarily renames that
> variable prior to a scripted replacement of "hex" with "std::hex".  I
> wonder whether the task would have been easier if I had used a
> different name for the variable.

Well, then I'd have had something looking like an actual conflict in my
rejected parts of the patches.  It would likely have been a bit more
work to resolve and quite a bit less to hunt down.

> I don't understand from this description exactly problem you
> experienced and where in my development process you would have wanted
> me to use that command.

It wasn't clear that this partial overlap with a patch of Han-Wen was
independently arrived at and manually created rather than an artifact.
The problem I experienced is that a partially applying patch apparently
was partly applied previously.  That this was not a problem of what I
was doing took some time to find out.  Of course, resetting would indeed
not have helped since my guess at the discrepancy's origin was wrong.

-- 
David Kastrup



Re: GUILE 2.2 progress

2020-01-25 Thread Jonas Hahnfeld via Discussions on LilyPond development
Am Samstag, den 25.01.2020, 14:45 +0100 schrieb Thomas Morley:
> Am Sa., 25. Jan. 2020 um 13:48 Uhr schrieb Han-Wen Nienhuys <
> hanw...@gmail.com
> >:
> > [...]
> > I think it is clear that we should not be targeting GUILE 2.0, but GUILE 
> > 2.2.
> 
> I dropped any work for guile-2.0 long ago.
> For me it's more the question whether we should entirely skip guile-2,
> going for guile-3 directly.

My 2 cents: Guile 3.0 was only released very recently, it's not even
available in rolling release distributions like Arch Linux. Most
certainly it will not be part of the upcoming Ubuntu 20.04 release?
Requiring Guile 2.2 would exclude (vanilla) Ubuntu 16.04 and CentOS 7
which I think would be acceptable for master and future major versions
of LilyPond.

Jonas


signature.asc
Description: This is a digitally signed message part


Re: GUILE 2.2 progress

2020-01-25 Thread Thomas Morley
Am Sa., 25. Jan. 2020 um 15:03 Uhr schrieb Han-Wen Nienhuys :
>
> On Sat, Jan 25, 2020 at 2:45 PM Thomas Morley  
> wrote:
> > Compiling the same file with my slow loptop and
> > released 2.19.83
> >
> ..
> > Without the error with string-append
>
> interesting. I was on 2.2.4; maybe these were bugs fixed in 2.2.6 or
> beyond. Let me see if I can upgrade things.

Iirc, the fix is already in our remote branch dev/guile-v2-work.
I may be wrong, though worth a look.

Cheers,
  Harm



Re: Issue 4550: Avoid "using namespace std; " in included files (Take 2) (issue 579240043 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread David Kastrup
Han-Wen Nienhuys  writes:

> I've pushed all my local branches to
> https://github.com/hanwen/lilypond , which make the rebasing and such
> easier.
>
> How does the pushing process go? Even though I am busy, maybe Jonas is
> right that it's easier for everyone if I push directly.

Current batch is through.  Whatever rocks your boat.

-- 
David Kastrup



Re: GUILE 2.2 progress

2020-01-25 Thread Han-Wen Nienhuys
On Sat, Jan 25, 2020 at 2:45 PM Thomas Morley  wrote:
> Compiling the same file with my slow loptop and
> released 2.19.83
>
..
> Without the error with string-append

interesting. I was on 2.2.4; maybe these were bugs fixed in 2.2.6 or
beyond. Let me see if I can upgrade things.

> > These timings are internally consistent: if we can do byte-compilation
> > on the .scm files (which would make the SCM reading instantaneous),
> > and get the GC overhead down, we'd be at the same performance level of
> > GUILE 1.8.
> >
> > What do folks think is more important? Reducing GC overhead is a win
> > on large scores, while byte-compilation will make compile/edit/debug
> > cycles faster.
>
> Having a slow laptop, I'm always in favor of speed, though I didn't
> understand what benefit you expect by "reducing GC overhead".
> Could you explain?

Compiling the .scm files happens once, and is a fixed cost. The fixed
cost is large when you process a tiny .ly file, but it is neglible if
the file is large.

The overhead of the new Garbage Collector is likely proportional to
the size of the input, and is the cause that GUILE 2.2/3 will be about
50% slower than GUILE 1.8.

-- 
Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen



Re: GUILE 2.2 progress

2020-01-25 Thread David Kastrup
Han-Wen Nienhuys  writes:

> With https://codereview.appspot.com/551390047/

That patch is papering over a problem rather than fixing it.  It might
be a reoccurence of something like

commit c01a2a757e3c59727bdfa8d77568bf42525fbe05
Author: Andy Wingo 
Date:   Thu Jun 23 11:47:42 2016 +0200

Fix race between SMOB marking and finalization

* libguile/smob.c (clear_smobnum): New helper.
  (finalize_smob): Re-set the smobnum to the "finalized smob" type
  before finalizing.  Fixes #19883.
  (scm_smob_prehistory): Pre-register a "finalized smob" type, which has
  no mark procedure.
* test-suite/standalone/test-smob-mark-race.c: New file.
* test-suite/standalone/Makefile.am: Arrange to build and run the new
  test.


> it looks like I can run LilyPond against GUILE 2.2 mostly:
>
>
> $ time lilypond input/regression/mozart-hrn-3.ly
> GNU LilyPond 2.21.0
> Import (ice-9 threads) to have access to `call-with-new-thread'.
> Import (ice-9 threads) to have access to `current-thread'.
> Processing `input/regression/mozart-hrn-3.ly'
> Parsing...
> input/regression/mozart-hrn-3.ly:31:9: error: not a markup
>
> #(string-append  "It has been typeset and placed in the public "

Looks like it should be a markup.

> Interpreting 
> music...[8][16][24][32][40][48][56][64][72][80][88][96][104][112][120]
> Preprocessing graphical objects...
> Interpreting music...
> Interpreting music...
> Interpreting music...[8][16][24][32][40][48]
> Preprocessing graphical objects...
> Interpreting music...
> Interpreting
> music...[8][16][24][32][40][48][56][64][72][80][88][96][104][112][120][128][136][144]
> Preprocessing graphical objects...
> MIDI output to `mozart-hrn-3.midi'...
> MIDI output to `mozart-hrn-3-1.midi'...
> MIDI output to `mozart-hrn-3-2.midi'...
> Finding the ideal number of pages...
> Fitting music on 3 or 4 pages...
> Drawing systems...
> Layout output to `/tmp/lilypond-A2ssuI'...
> Converting to `mozart-hrn-3.pdf'...
> Deleting `/tmp/lilypond-A2ssuI'...
> fatal error: failed files: "input/regression/mozart-hrn-3.ly"
>
> real 0m7.239s
> user 0m8.637s
> sys 0m0.121s
>
> (this disables the GS step, as something is munging a string , causing
> GS to barf.)

Likely an encoding problem.

> 7.2 seconds end-to-end includes 1.7s of GC, and 2.0s of reading/compiling SCM.
>
> On guile 1.8, with GS disabled, the end to end runtime is
>
> 3.568s including 0.33s for GC and 0.32s for reading the SCM.
>
> These timings are internally consistent: if we can do byte-compilation
> on the .scm files (which would make the SCM reading instantaneous),
> and get the GC overhead down, we'd be at the same performance level of
> GUILE 1.8.
>
> What do folks think is more important? Reducing GC overhead is a win
> on large scores, while byte-compilation will make compile/edit/debug
> cycles faster.

Byte compilation is sort of a big thing since it needs to find places
for the .go files to go in a LilyPond installation/distribution without
messing up future compile/edit/debug cycles.

If you offer to do either, my vote would be on that as the clearly more
tedious one.

> Even if we wouldn't recoup all the overhead of GC, I think the reduced
> complexity of using BGC for GC might be worth it.
>
> I think it is clear that we should not be targeting GUILE 2.0, but
> GUILE 2.2.

Well, not much of a point in targeting an old stable version except
possibly for checking the new stable for regressions.

-- 
David Kastrup



Re: mirroring lilypond on github

2020-01-25 Thread Werner LEMBERG


> I'm going to call
> 
>   git push --mirror g...@github.com:lilypond/lilypond.git
> 
> to update the github mirror.  However, this will cause the following
> changes:

I've now done a push, and it seems to have worked correctly.  Please
check.


Werner



Re: GUILE 2.2 progress

2020-01-25 Thread Thomas Morley
Am Sa., 25. Jan. 2020 um 13:48 Uhr schrieb Han-Wen Nienhuys :
>
> With https://codereview.appspot.com/551390047/
> it looks like I can run LilyPond against GUILE 2.2 mostly:
>
>
> $ time lilypond input/regression/mozart-hrn-3.ly
> GNU LilyPond 2.21.0
> Import (ice-9 threads) to have access to `call-with-new-thread'.
> Import (ice-9 threads) to have access to `current-thread'.
> Processing `input/regression/mozart-hrn-3.ly'
> Parsing...
> input/regression/mozart-hrn-3.ly:31:9: error: not a markup
>
> #(string-append  "It has been typeset and placed in the public "
> Interpreting 
> music...[8][16][24][32][40][48][56][64][72][80][88][96][104][112][120]
> Preprocessing graphical objects...
> Interpreting music...
> Interpreting music...
> Interpreting music...[8][16][24][32][40][48]
> Preprocessing graphical objects...
> Interpreting music...
> Interpreting 
> music...[8][16][24][32][40][48][56][64][72][80][88][96][104][112][120][128][136][144]
> Preprocessing graphical objects...
> MIDI output to `mozart-hrn-3.midi'...
> MIDI output to `mozart-hrn-3-1.midi'...
> MIDI output to `mozart-hrn-3-2.midi'...
> Finding the ideal number of pages...
> Fitting music on 3 or 4 pages...
> Drawing systems...
> Layout output to `/tmp/lilypond-A2ssuI'...
> Converting to `mozart-hrn-3.pdf'...
> Deleting `/tmp/lilypond-A2ssuI'...
> fatal error: failed files: "input/regression/mozart-hrn-3.ly"
>
> real 0m7.239s
> user 0m8.637s
> sys 0m0.121s
>
> (this disables the GS step, as something is munging a string , causing
> GS to barf.)
>
> 7.2 seconds end-to-end includes 1.7s of GC, and 2.0s of reading/compiling SCM.
>
> On guile 1.8, with GS disabled, the end to end runtime is
>
> 3.568s including 0.33s for GC and 0.32s for reading the SCM.

Compiling the same file with my slow loptop and
released 2.19.83

real 0m13,777s
user 0m12,731s
sys 0m0,855s

with my own guile-3 setup (none of your recent patches applied):
real 0m22,384s
user 0m24,366s
sys 0m0,693s

Without the error with string-append

>
> These timings are internally consistent: if we can do byte-compilation
> on the .scm files (which would make the SCM reading instantaneous),
> and get the GC overhead down, we'd be at the same performance level of
> GUILE 1.8.
>
> What do folks think is more important? Reducing GC overhead is a win
> on large scores, while byte-compilation will make compile/edit/debug
> cycles faster.

Having a slow laptop, I'm always in favor of speed, though I didn't
understand what benefit you expect by "reducing GC overhead".
Could you explain?

>
> Even if we wouldn't recoup all the overhead of GC, I think the reduced
> complexity of using BGC for GC might be worth it.
>
> I think it is clear that we should not be targeting GUILE 2.0, but GUILE 2.2.

I dropped any work for guile-2.0 long ago.
For me it's more the question whether we should entirely skip guile-2,
going for guile-3 directly.

> --
> Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen
>

Best,
  Harm



Re: Issue 4550: Avoid "using namespace std; " in included files (Take 2) (issue 579240043 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread Dan Eble
On Jan 25, 2020, at 07:26, David Kastrup  wrote:
> 
> -  Interval hex = head->extent (common_[X_AXIS], X_AXIS);
> +  Interval head_ext = head->extent (common_[X_AXIS], X_AXIS);
...
> 
> That last part applies part of a patch from an unrelated issue of
> Han-Wen.  Please don't do stuff like that, if necessary using

It does not apply a patch from Han-Wen.  It necessarily renames that variable 
prior to a scripted replacement of "hex" with "std::hex".  I wonder whether the 
task would have been easier if I had used a different name for the variable.

> Please don't do stuff like that, if necessary using
> 
> git reset --hard

I don't understand from this description exactly problem you experienced and 
where in my development process you would have wanted me to use that command.
— 
Dan




Re: Issue 4550: Avoid "using namespace std; " in included files (Take 2) (issue 579240043 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread Han-Wen Nienhuys
(and in the process, I erroneously clobbered
https://github.com/lilypond/lilypond, which I am fixing now.

On Sat, Jan 25, 2020 at 2:01 PM Han-Wen Nienhuys  wrote:
>
> I've pushed all my local branches to
> https://github.com/hanwen/lilypond , which make the rebasing and such
> easier.
>
> How does the pushing process go? Even though I am busy, maybe Jonas is
> right that it's easier for everyone if I push directly.
>
> On Sat, Jan 25, 2020 at 1:26 PM David Kastrup  wrote:
> >
> > d...@gnu.org writes:
> >
> > > On 2020/01/24 15:26:06, dak wrote:
> > >
> > > What I meant to say: I guess I should be able to handle those
> > > comparatively obvious merge conflicts.
> > >
> > > https://codereview.appspot.com/579240043/
> >
> > But frankly, I have not been reckoning with having to deal with the ilk
> > of
> >
> > commit 6f4128e1f359daf38a3caf2c0e4ad68e16c10540
> > Author: Dan Eble 
> > Date:   Thu Jan 9 13:04:18 2020 -0500
> >
> > Issue 4550/2: Avoid "using namespace std;" in included files
> >
> > These are manual changes in preparation for an automated removal of
> > "using namespace std;".
> >
> > Mostly, these are additions of using-declarations for commonly used
> > types and containers (e.g. std::string, std::vector) to *.cc files so
> > that they will continue to build after the big removal.
> >
> > diff --git a/lily/slur-scoring.cc b/lily/slur-scoring.cc
> > index bb779a040e..262b41a677 100644
> > --- a/lily/slur-scoring.cc
> > +++ b/lily/slur-scoring.cc
> > @@ -45,6 +45,9 @@
> >  #include "stem.hh"
> >  #include "warn.hh"
> >
> > +using std::string;
> > +using std::vector;
> > +
> >  /*
> >TODO:
> >
> > @@ -122,12 +125,12 @@ Slur_score_state::get_encompass_info (Grob *col) const
> >
> >if (Grob *head = Note_column::first_head (col))
> >  {
> > -  Interval hex = head->extent (common_[X_AXIS], X_AXIS);
> > +  Interval head_ext = head->extent (common_[X_AXIS], X_AXIS);
> >// FIXME: Is there a better option than setting to 0?
> > -  if (hex.is_empty ())
> > +  if (head_ext.is_empty ())
> >  ei.x_ = 0;
> >else
> > -ei.x_ = hex.center ();
> > +ei.x_ = head_ext.center ();
> >  }
> >else
> >  ei.x_ = col->extent (common_[X_AXIS], X_AXIS).center ();
> >
> > That last part applies part of a patch from an unrelated issue of
> > Han-Wen.  Please don't do stuff like that, if necessary using
> >
> > git reset --hard
> >
> > Took me about half an hour of head-scratching to figure out why the
> > diffs would differ here.
> >
> > --
> > David Kastrup
> >
>
>
> --
> Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen



-- 
Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen



Re: Issue 4550: Avoid "using namespace std; " in included files (Take 2) (issue 579240043 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread Han-Wen Nienhuys
I've pushed all my local branches to
https://github.com/hanwen/lilypond , which make the rebasing and such
easier.

How does the pushing process go? Even though I am busy, maybe Jonas is
right that it's easier for everyone if I push directly.

On Sat, Jan 25, 2020 at 1:26 PM David Kastrup  wrote:
>
> d...@gnu.org writes:
>
> > On 2020/01/24 15:26:06, dak wrote:
> >
> > What I meant to say: I guess I should be able to handle those
> > comparatively obvious merge conflicts.
> >
> > https://codereview.appspot.com/579240043/
>
> But frankly, I have not been reckoning with having to deal with the ilk
> of
>
> commit 6f4128e1f359daf38a3caf2c0e4ad68e16c10540
> Author: Dan Eble 
> Date:   Thu Jan 9 13:04:18 2020 -0500
>
> Issue 4550/2: Avoid "using namespace std;" in included files
>
> These are manual changes in preparation for an automated removal of
> "using namespace std;".
>
> Mostly, these are additions of using-declarations for commonly used
> types and containers (e.g. std::string, std::vector) to *.cc files so
> that they will continue to build after the big removal.
>
> diff --git a/lily/slur-scoring.cc b/lily/slur-scoring.cc
> index bb779a040e..262b41a677 100644
> --- a/lily/slur-scoring.cc
> +++ b/lily/slur-scoring.cc
> @@ -45,6 +45,9 @@
>  #include "stem.hh"
>  #include "warn.hh"
>
> +using std::string;
> +using std::vector;
> +
>  /*
>TODO:
>
> @@ -122,12 +125,12 @@ Slur_score_state::get_encompass_info (Grob *col) const
>
>if (Grob *head = Note_column::first_head (col))
>  {
> -  Interval hex = head->extent (common_[X_AXIS], X_AXIS);
> +  Interval head_ext = head->extent (common_[X_AXIS], X_AXIS);
>// FIXME: Is there a better option than setting to 0?
> -  if (hex.is_empty ())
> +  if (head_ext.is_empty ())
>  ei.x_ = 0;
>else
> -ei.x_ = hex.center ();
> +ei.x_ = head_ext.center ();
>  }
>else
>  ei.x_ = col->extent (common_[X_AXIS], X_AXIS).center ();
>
> That last part applies part of a patch from an unrelated issue of
> Han-Wen.  Please don't do stuff like that, if necessary using
>
> git reset --hard
>
> Took me about half an hour of head-scratching to figure out why the
> diffs would differ here.
>
> --
> David Kastrup
>


-- 
Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen



Re: Define operator new/delete for smobs (issue 551390047 by hanw...@gmail.com)

2020-01-25 Thread hanwenn
On 2020/01/25 12:50:15, hanwenn wrote:
> On 2020/01/25 12:37:32, dak wrote:
> > That seems weird for me.  The topic states "this provides a way to
run
> LilyPond
> > with Guile 2.2" but garbage collection with Guile 2.2 works out of
the box
> > already.  This patch only causes extra work and will slow down
garbage
> > collection further.
> > 
> > The only way in which it could make sense is if in return some other
GC hooks
> > and/or work would be disabled.
> 
> running against
> 
> $ guile2.2 --version
> guile (GNU Guile) 2.2.4
> 
> I get 
> 
> Import (ice-9 threads) to have access to `call-with-new-thread'.
> Import (ice-9 threads) to have access to `current-thread'.
> Processing `input/regression/mozart-hrn-3.ly'
> Parsing...double free or corruption (!prev)
> 
> Thread 5 "lilypond" received signal SIGABRT, Aborted.
> [Switching to Thread 0x7fffeea92700 (LWP 31206)]
> 0x77526e35 in raise () from /lib64/libc.so.6
> Missing separate debuginfos, use: dnf debuginfo-install
> guile22-2.2.4-3.fc30.x86_64 libunistring-0.9.10-5.fc30.x86_64
> (gdb) up
> #1  0x77511895 in abort () from /lib64/libc.so.6
> (gdb) 
> #2  0x7756a08f in __libc_message () from /lib64/libc.so.6
> (gdb) 
> #3  0x7757140c in malloc_printerr () from /lib64/libc.so.6
> (gdb) 
> #4  0x775731bc in _int_free () from /lib64/libc.so.6
> (gdb) 
> #5  0x004dd2c4 in Simple_smob::free_smob
(obj=) at
> /usr/include/c++/9/bits/basic_string.h:2300
> 2300c_str() const _GLIBCXX_NOEXCEPT
> (gdb) 
> #6  0x77b8b4a5 in GC_invoke_finalizers () at finalize.c:1216
> 1216  (*(curr_fo -> fo_fn))((ptr_t)(curr_fo -> fo_hidden_base),
> (gdb) down
> #5  0x004dd2c4 in Simple_smob::free_smob
(obj=) at
> /usr/include/c++/9/bits/basic_string.h:2300
> 2300c_str() const _GLIBCXX_NOEXCEPT
> (gdb) quit

we could make this conditional on GUILEV2 obviously.

Unfortunately, we can't as yet get rid fo the mark functions, because we
need a vector with a custom allocator first (Grob_array!).



https://codereview.appspot.com/551390047/



Re: Define operator new/delete for smobs (issue 551390047 by hanw...@gmail.com)

2020-01-25 Thread hanwenn
Reviewers: dak,

Message:
On 2020/01/25 12:37:32, dak wrote:
> That seems weird for me.  The topic states "this provides a way to run
LilyPond
> with Guile 2.2" but garbage collection with Guile 2.2 works out of the
box
> already.  This patch only causes extra work and will slow down garbage
> collection further.
> 
> The only way in which it could make sense is if in return some other
GC hooks
> and/or work would be disabled.

running against

$ guile2.2 --version
guile (GNU Guile) 2.2.4

I get 

Import (ice-9 threads) to have access to `call-with-new-thread'.
Import (ice-9 threads) to have access to `current-thread'.
Processing `input/regression/mozart-hrn-3.ly'
Parsing...double free or corruption (!prev)

Thread 5 "lilypond" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffeea92700 (LWP 31206)]
0x77526e35 in raise () from /lib64/libc.so.6
Missing separate debuginfos, use: dnf debuginfo-install
guile22-2.2.4-3.fc30.x86_64 libunistring-0.9.10-5.fc30.x86_64
(gdb) up
#1  0x77511895 in abort () from /lib64/libc.so.6
(gdb) 
#2  0x7756a08f in __libc_message () from /lib64/libc.so.6
(gdb) 
#3  0x7757140c in malloc_printerr () from /lib64/libc.so.6
(gdb) 
#4  0x775731bc in _int_free () from /lib64/libc.so.6
(gdb) 
#5  0x004dd2c4 in Simple_smob::free_smob (obj=) at /usr/include/c++/9/bits/basic_string.h:2300
2300  c_str() const _GLIBCXX_NOEXCEPT
(gdb) 
#6  0x77b8b4a5 in GC_invoke_finalizers () at finalize.c:1216
1216(*(curr_fo -> fo_fn))((ptr_t)(curr_fo -> fo_hidden_base),
(gdb) down
#5  0x004dd2c4 in Simple_smob::free_smob (obj=) at /usr/include/c++/9/bits/basic_string.h:2300
2300  c_str() const _GLIBCXX_NOEXCEPT
(gdb) quit


Description:
Define operator new/delete for smobs

This marks the memory for tracing with BDW GC in GUILE >= 2.0
automatically. This provides a way to run LilyPond against GUILE 2.2.

Please review this at https://codereview.appspot.com/551390047/

Affected files (+9, -0 lines):
  M lily/include/smobs.hh


Index: lily/include/smobs.hh
diff --git a/lily/include/smobs.hh b/lily/include/smobs.hh
index 
5fd1ed660f134bf841708a7271f0b3b792ad48db..b75f9fb928fd03024d3349e1df663f6737592acb
 100644
--- a/lily/include/smobs.hh
+++ b/lily/include/smobs.hh
@@ -175,6 +175,15 @@ class Smob_base
   static Scm_init scm_init_;
   static void init (void);
   static std::string smob_name_;
+
+public:
+  void *operator new(size_t sz) {
+return scm_gc_malloc(sz, "smob");
+  }
+  void operator delete(void *p) {
+scm_gc_free(p, 0, "smob");
+  }
+
 protected:
   static Super *unchecked_unsmob (SCM s)
   {





GUILE 2.2 progress

2020-01-25 Thread Han-Wen Nienhuys
With https://codereview.appspot.com/551390047/
it looks like I can run LilyPond against GUILE 2.2 mostly:


$ time lilypond input/regression/mozart-hrn-3.ly
GNU LilyPond 2.21.0
Import (ice-9 threads) to have access to `call-with-new-thread'.
Import (ice-9 threads) to have access to `current-thread'.
Processing `input/regression/mozart-hrn-3.ly'
Parsing...
input/regression/mozart-hrn-3.ly:31:9: error: not a markup

#(string-append  "It has been typeset and placed in the public "
Interpreting 
music...[8][16][24][32][40][48][56][64][72][80][88][96][104][112][120]
Preprocessing graphical objects...
Interpreting music...
Interpreting music...
Interpreting music...[8][16][24][32][40][48]
Preprocessing graphical objects...
Interpreting music...
Interpreting 
music...[8][16][24][32][40][48][56][64][72][80][88][96][104][112][120][128][136][144]
Preprocessing graphical objects...
MIDI output to `mozart-hrn-3.midi'...
MIDI output to `mozart-hrn-3-1.midi'...
MIDI output to `mozart-hrn-3-2.midi'...
Finding the ideal number of pages...
Fitting music on 3 or 4 pages...
Drawing systems...
Layout output to `/tmp/lilypond-A2ssuI'...
Converting to `mozart-hrn-3.pdf'...
Deleting `/tmp/lilypond-A2ssuI'...
fatal error: failed files: "input/regression/mozart-hrn-3.ly"

real 0m7.239s
user 0m8.637s
sys 0m0.121s

(this disables the GS step, as something is munging a string , causing
GS to barf.)

7.2 seconds end-to-end includes 1.7s of GC, and 2.0s of reading/compiling SCM.

On guile 1.8, with GS disabled, the end to end runtime is

3.568s including 0.33s for GC and 0.32s for reading the SCM.

These timings are internally consistent: if we can do byte-compilation
on the .scm files (which would make the SCM reading instantaneous),
and get the GC overhead down, we'd be at the same performance level of
GUILE 1.8.

What do folks think is more important? Reducing GC overhead is a win
on large scores, while byte-compilation will make compile/edit/debug
cycles faster.

Even if we wouldn't recoup all the overhead of GC, I think the reduced
complexity of using BGC for GC might be worth it.

I think it is clear that we should not be targeting GUILE 2.0, but GUILE 2.2.

-- 
Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen



Define operator new/delete for smobs (issue 551390047 by hanw...@gmail.com)

2020-01-25 Thread dak
That seems weird for me.  The topic states "this provides a way to run
LilyPond with Guile 2.2" but garbage collection with Guile 2.2 works out
of the box already.  This patch only causes extra work and will slow
down garbage collection further.

The only way in which it could make sense is if in return some other GC
hooks and/or work would be disabled.

https://codereview.appspot.com/551390047/



Re: Issue 4550: Avoid "using namespace std; " in included files (Take 2) (issue 579240043 by nine.fierce.ball...@gmail.com)

2020-01-25 Thread David Kastrup
d...@gnu.org writes:

> On 2020/01/24 15:26:06, dak wrote:
>
> What I meant to say: I guess I should be able to handle those
> comparatively obvious merge conflicts.
>
> https://codereview.appspot.com/579240043/

But frankly, I have not been reckoning with having to deal with the ilk
of

commit 6f4128e1f359daf38a3caf2c0e4ad68e16c10540
Author: Dan Eble 
Date:   Thu Jan 9 13:04:18 2020 -0500

Issue 4550/2: Avoid "using namespace std;" in included files

These are manual changes in preparation for an automated removal of
"using namespace std;".

Mostly, these are additions of using-declarations for commonly used
types and containers (e.g. std::string, std::vector) to *.cc files so
that they will continue to build after the big removal.

diff --git a/lily/slur-scoring.cc b/lily/slur-scoring.cc
index bb779a040e..262b41a677 100644
--- a/lily/slur-scoring.cc
+++ b/lily/slur-scoring.cc
@@ -45,6 +45,9 @@
 #include "stem.hh"
 #include "warn.hh"
 
+using std::string;
+using std::vector;
+
 /*
   TODO:
 
@@ -122,12 +125,12 @@ Slur_score_state::get_encompass_info (Grob *col) const
 
   if (Grob *head = Note_column::first_head (col))
 {
-  Interval hex = head->extent (common_[X_AXIS], X_AXIS);
+  Interval head_ext = head->extent (common_[X_AXIS], X_AXIS);
   // FIXME: Is there a better option than setting to 0?
-  if (hex.is_empty ())
+  if (head_ext.is_empty ())
 ei.x_ = 0;
   else
-ei.x_ = hex.center ();
+ei.x_ = head_ext.center ();
 }
   else
 ei.x_ = col->extent (common_[X_AXIS], X_AXIS).center ();

That last part applies part of a patch from an unrelated issue of
Han-Wen.  Please don't do stuff like that, if necessary using

git reset --hard

Took me about half an hour of head-scratching to figure out why the
diffs would differ here.

-- 
David Kastrup



Re: Simplify and speed up uniquify (issue 583390043 by hanw...@gmail.com)

2020-01-25 Thread hanwenn
On 2020/01/24 15:50:22, Dan Eble wrote:
> On 2020/01/24 15:17:02, dak wrote:
> > On 2020/01/24 14:11:59, Dan Eble wrote:
> > > On 2020/01/24 14:06:22, hanwenn wrote:
> > > > If the allocation cost becomes problematic, we can use another
hashmap
> > > instead.
> > > 
> > > "We" could profile it and know before pushing whether it is worth
it.
> > 
> > I don't think that this is really performance-critical.
> 
> I accept your informed intuition, but I also have more suggestions.
> 
> Don't assume the hash function is perfect: create the table with more
buckets,
> say 2*size.
> 
> Instead of calling find() then insert(), just call insert() and check
whether it
> worked, something like this (untested):
> 
> if (seen.insert(grobs[i]).second)
>   grobs[j++] = grobs[i];
> 
> https://en.cppreference.com/w/cpp/container/unordered_set/insert

Done.

https://codereview.appspot.com/583390043/



Re: Clean up and document include file searching (issue 573400043 by hanw...@gmail.com)

2020-01-25 Thread hanwenn


https://codereview.appspot.com/573400043/diff/549420043/lily/sources.cc
File lily/sources.cc (right):

https://codereview.appspot.com/573400043/diff/549420043/lily/sources.cc#newcode60
lily/sources.cc:60: Sources::find_full_path(string file_string, string
const _dir)
On 2020/01/21 13:42:27, Dan Eble wrote:
> Is there any reason not to make this const?

Done.

https://codereview.appspot.com/573400043/



PATCHES - Countdown for January 25th

2020-01-25 Thread pkx166h

Hello,

Here is the current patch countdown list. The next countdown will be on
January 27th

A quick synopsis of all patches currently in the review process can be
found here:

http://philholmes.net/lilypond/allura/




 Push:

5676 remove obsolete lines from lily-guile-macros.hh - hanwen
https://sourceforge.net/p/testlilyissues/issues/5676
http://codereview.appspot.com/555170043

5675 Document C++ structs for slur scoring - hanwen
https://sourceforge.net/p/testlilyissues/issues/5675
http://codereview.appspot.com/571380043

5673 Remove implicit evaluation of the ".twy" file - hanwen
https://sourceforge.net/p/testlilyissues/issues/5673
http://codereview.appspot.com/551380043

5671 lily/page-breaking: pass vector by reference - hanwen
https://sourceforge.net/p/testlilyissues/issues/5671
http://codereview.appspot.com/581510043

5669 Document why System::rank_type is int16 - hanwen
https://sourceforge.net/p/testlilyissues/issues/5669
http://codereview.appspot.com/559370043

5668 Documentation: fix typo in German spacing.itely file - hanwen
https://sourceforge.net/p/testlilyissues/issues/5668
http://codereview.appspot.com/581490043

5667 Documentation: fix typos in tool naming - hanwen
https://sourceforge.net/p/testlilyissues/issues/5667
http://codereview.appspot.com/581480043

5666 ly_scm_write_string: call scm_write directly - hanwen
https://sourceforge.net/p/testlilyissues/issues/5666
http://codereview.appspot.com/545450043


 Countdown:

5672 Clean up and document include file searching - hanwen
https://sourceforge.net/p/testlilyissues/issues/5672
http://codereview.appspot.com/573400043


 Review:

5689 Refactor enforcement of a single Score context - Dan Eble
https://sourceforge.net/p/testlilyissues/issues/5689
http://codereview.appspot.com/551390046

5688 Announce end of multi-measure-rest - hanwen
https://sourceforge.net/p/testlilyissues/issues/5688
http://codereview.appspot.com/561310045

5687 Remove dead code throughout - hanwen
https://sourceforge.net/p/testlilyissues/issues/5687
http://codereview.appspot.com/547470044

5686 Simplify and speed up uniquify - hanwen
https://sourceforge.net/p/testlilyissues/issues/5686
http://codereview.appspot.com/583390043

5685 Remove outdated comment about resizable hash tables - hanwen
https://sourceforge.net/p/testlilyissues/issues/5685
http://codereview.appspot.com/549460043

5684 Explain dead code for GUILE2 - hanwen
https://sourceforge.net/p/testlilyissues/issues/5684
http://codereview.appspot.com/547470043

5683 GUILE2: generate internals doc in UTF-8 - hanwen
https://sourceforge.net/p/testlilyissues/issues/5683
http://codereview.appspot.com/575540045

5682 Only print out open type font substitution if there was a change - 
hanwen

https://sourceforge.net/p/testlilyissues/issues/5682
http://codereview.appspot.com/577390043

5678 l -> lilne - hanwen
https://sourceforge.net/p/testlilyissues/issues/5678
http://codereview.appspot.com/581470047

5670 lily: fix some type conversion warnings - hanwen
https://sourceforge.net/p/testlilyissues/issues/5670
http://codereview.appspot.com/557190043


 New:

5690 Tiny fixes for "Extract PDFmark" - Jonas Hahnfeld
https://sourceforge.net/p/testlilyissues/issues/5690
http://codereview.appspot.com/571420055

5680 Provide --loglevel=PROGRESS for make VERBOSE=1 - hanwen
https://sourceforge.net/p/testlilyissues/issues/5680
http://codereview.appspot.com/575540044

5646 Switch to Python 3.x - Jonas Hahnfeld
https://sourceforge.net/p/testlilyissues/issues/5646
http://codereview.appspot.com/545370043


***


Regards,

James




Re: french beaming incorrectly makes stems longer

2020-01-25 Thread pkx166h

Hello,


On 25/01/2020 09:43, Malte Meyn wrote:



Am 25.01.20 um 08:12 schrieb Werner LEMBERG:


Before adding it to the bug tracker I want to check this group's
knowledge whether there is a reason that French beams are longer than
normal:

   \relative c'' {
 r16 f d f
 \override Stem.french-beaming = ##t
 r16 f d f
   }

Looking into scores from French publishers this behaviour seems to be
incorrect.


Another problem that has to do with stem lengths in french beaming: 
articulations use the shorter beam length for positioning, resulting 
in collisions:


%
\version "2.19.83"

\relative c'' {
  \voiceTwo
  r16 f-> d-> f->
  \override Stem.french-beaming = ##t
  r16 f-> d-> f->
}
%

Both beam and articulation positions should be the same for default 
and french beams. Probably the easiest solution would be to have 
shorter stem stencils without decreasing the stems’ Y extents.



Added as

https://sourceforge.net/p/testlilyissues/issues/5691/


James




Re: french beaming incorrectly makes stems longer

2020-01-25 Thread Malte Meyn




Am 25.01.20 um 08:12 schrieb Werner LEMBERG:


Before adding it to the bug tracker I want to check this group's
knowledge whether there is a reason that French beams are longer than
normal:

   \relative c'' {
 r16 f d f
 \override Stem.french-beaming = ##t
 r16 f d f
   }

Looking into scores from French publishers this behaviour seems to be
incorrect.


Another problem that has to do with stem lengths in french beaming: 
articulations use the shorter beam length for positioning, resulting in 
collisions:


%
\version "2.19.83"

\relative c'' {
  \voiceTwo
  r16 f-> d-> f->
  \override Stem.french-beaming = ##t
  r16 f-> d-> f->
}
%

Both beam and articulation positions should be the same for default and 
french beams. Probably the easiest solution would be to have shorter 
stem stencils without decreasing the stems’ Y extents.




Re: Tiny fixes for "Extract PDFmark" (issue 571420055 by jonas.hahnf...@gmail.com)

2020-01-25 Thread jonas . hahnfeld
Reviewers: lemzwerg,


https://codereview.appspot.com/571420055/diff/571400046/configure.ac
File configure.ac (right):

https://codereview.appspot.com/571420055/diff/571400046/configure.ac#newcode391
configure.ac:391: ["(Using Ghostscript >= 9.20 together with Extract
PDFmark"])
On 2020/01/25 09:15:10, lemzwerg wrote:
> I suggest to use the program's name.
> 
>   s/Extract PDFmark/extractpdfmark/

I wasn't sure either, but https://github.com/trueroad/extractpdfmark
says "Extract PDFmark" it's the full name of the project. But maybe we
should just change it for consistency.

Description:
Tiny fixes for "Extract PDFmark"

Individual changes:
1) Fix extractpdfmark not coming from PATH

If STEPMAKE_PROGS cannot find an optional program, it returns "false".
Checking for this value is better than requiring exactly
"extractpdfmark"
which does not hold if the program is not in PATH and the user
explicitly
sets the environment variable EXTRACTPDFMARK.

2) Fix extractpdfmark with GhostScript 9.50

GhostScript 9.50 defaults to -dSAFE, so the build system needs to pas
in -dNOSAFE explicitly.

3) Update message for optional extractpdfmark

>From my experiments, enabling Extract PDFmark rather increases the
required disk space. This is probably because the process produces
additional intermediate files. It only benefits the final PDF docs.

Please review this at https://codereview.appspot.com/571420055/

Affected files (+6, -5 lines):
  M configure.ac
  M make/lilypond-book-rules.make
  M stepmake/stepmake/texinfo-rules.make


Index: configure.ac
diff --git a/configure.ac b/configure.ac
index 
c6261aeb6abc224490b52458578dfe947133e37c..0cbd0c26b1e3ea6ebaa57cab801b151e18c37e11
 100644
--- a/configure.ac
+++ b/configure.ac
@@ -382,17 +382,15 @@ if test "$GS920_VERSION" -lt "$req"; then
 GS920=
 USE_EXTRACTPDFMARK=no
 fi
-if test "$EXTRACTPDFMARK" != "extractpdfmark"; then
+if test "$EXTRACTPDFMARK" == "false"; then
 EXTRACTPDFMARK=
 USE_EXTRACTPDFMARK=no
 fi
 if test "$USE_EXTRACTPDFMARK" != "yes"; then
 STEPMAKE_ADD_ENTRY(OPTIONAL,
-["(Optionally using Ghostscript >= 9.20 together with"])
+["(Using Ghostscript >= 9.20 together with Extract PDFmark"])
 STEPMAKE_ADD_ENTRY(OPTIONAL,
-[" Extract PDFmark can significantly reduce the disk space required"])
-STEPMAKE_ADD_ENTRY(OPTIONAL,
-[" for building the documentation and the final PDF files.)"])
+[" can significantly reduce the size of the final PDF files.)"])
 fi
 
 STEPMAKE_PROGS(MAKEINFO, makeinfo, REQUIRED, 6.1)
Index: make/lilypond-book-rules.make
diff --git a/make/lilypond-book-rules.make b/make/lilypond-book-rules.make
index 
f914bcc37574048bdeb463e6e9f9853547611e9a..98265fec230d36fdd35e07200c0eb6f3a3adaa0d
 100644
--- a/make/lilypond-book-rules.make
+++ b/make/lilypond-book-rules.make
@@ -43,6 +43,7 @@ $(outdir)/%.pdf:  $(outdir)/%.tex
 ifeq ($(USE_EXTRACTPDFMARK),yes)
$(EXTRACTPDFMARK) -o $(outdir)/$*.pdfmark $(outdir)/$*.build/$*.pdf
$(GS920) -dBATCH \
+ -dNOSAFER \
  -dNOPAUSE \
  $(LILYPOND_BOOK_GS_QUIET) \
  -sDEVICE=pdfwrite \
@@ -94,6 +95,7 @@ $(outdir)/%.pdf:  $(outdir)/%.xml
 ifeq ($(USE_EXTRACTPDFMARK),yes)
$(EXTRACTPDFMARK) -o $(outdir)/$*.pdfmark $(outdir)/$*.tmp.pdf
$(GS920) -dBATCH \
+ -dNOSAFER \
  -dNOPAUSE \
  $(LILYPOND_BOOK_GS_QUIET) \
  -sDEVICE=pdfwrite \
Index: stepmake/stepmake/texinfo-rules.make
diff --git a/stepmake/stepmake/texinfo-rules.make 
b/stepmake/stepmake/texinfo-rules.make
index 
f6398ae05c80b6d3d12e2e5c191420ce13844c69..26b392fc68282394f0da14111254aea6bea6c05a
 100644
--- a/stepmake/stepmake/texinfo-rules.make
+++ b/stepmake/stepmake/texinfo-rules.make
@@ -97,6 +97,7 @@ $(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/version.itexi 
$(outdir)/%.pdf.omf $(
 ifeq ($(USE_EXTRACTPDFMARK),yes)
$(EXTRACTPDFMARK) -o $(outdir)/$*.pdfmark $(outdir)/$*.tmp.pdf
$(GS920) -dBATCH \
+ -dNOSAFER \
  -dNOPAUSE \
  $(TEXINFO_GS_QUIET) \
  -sDEVICE=pdfwrite \





Tiny fixes for "Extract PDFmark" (issue 571420055 by jonas.hahnf...@gmail.com)

2020-01-25 Thread lemzwerg--- via Discussions on LilyPond development
LGTM, thanks


https://codereview.appspot.com/571420055/diff/571400046/configure.ac
File configure.ac (right):

https://codereview.appspot.com/571420055/diff/571400046/configure.ac#newcode391
configure.ac:391: ["(Using Ghostscript >= 9.20 together with Extract
PDFmark"])
I suggest to use the program's name.

  s/Extract PDFmark/extractpdfmark/

https://codereview.appspot.com/571420055/



Re: gub fail/local-build-script/new bug?

2020-01-25 Thread David Kastrup
Thomas Morley  writes:

> Am Fr., 24. Jan. 2020 um 22:28 Uhr schrieb Thomas Morley
> :
>>
>> Am Fr., 24. Jan. 2020 um 22:16 Uhr schrieb Dan Eble :
>> >
>> > On Jan 24, 2020, at 15:13, David Kastrup  wrote:
>> >
>> >
>> > Thomas Morley  writes:
>> >
>> > ...
>> >
>> > In member function 'std::string Interval_t::to_string() const':
>> > /home/hermann/gub/target/freebsd-x86/src/lilypond-git.sv.gnu.org--lilypond.git-master/flower/include/interval.tcc:142:14:
>> > error: 'std::to_string' has not been declared
>> >
>> > ...
>> >
>> > Probably:
>> >
>> > commit 9cf6b20aefd79be13c7678d4cc834434b7ca000d
>> > Author: Dan Eble 
>> > Date:   Sat Jan 11 08:55:36 2020 -0500
>> >
>> >Issue 5659/8: Remove Interval_t::T_to_string ()
>> >
>> >
>> > This is probably not the root cause, for though this tries to use
>> > std::to_string(), the reason it does so is because several
>> > preceding commits that removed ::to_string() overloads that were
>> > duplicating the function of std::to_string().  I think if you
>> > reverted just this commit, you'd hit an undefined std::to_string()
>> > elsewhere.
>> >
>> > Our current source code assumes more or less C++11 I think, and GUB
>> > compilers might not be up to it?
>> >
>> >
>> > This seems likely.  (Have I mentioned how tiresome GUB is?  I know
>> > it's been a while since anyone complained about it.)
>> >
>> > Can we upgrade GUB, or should I start working to restore the
>> > global ::to_string() functions?  Newer systems are better off with
>> > things the way they are, but I don't see a third option.
>> > —
>> > Dan
>> >
>>
>> Well, I can't do any reasonable GUB-fixing, it's out of my depth.
>>
>> Also, your relevant patches are out of my depth as well. Though,
>> nobody objected during review, thus I think we should keep them.
>>
>> But I happily test things :)
>> Right now I try a GUB-build from a local branch containing nothing
>> else than already released 2.19.83. (with said gublbb and most recent
>> GUB)
>> If it fails (it worked half a year ago), than I suspect a GUB-problem.
>> And I may try to bisect GUB, although this will be very tedious...
>> If success I may try going lilypond-upstream.
>>
>> Cheers,
>>   Harm
>
> This GUB-build succeded.
> Since I used the most up to date GUB, I suspect the encountered
> problem somewhere in LilyPond not in GUB.
> I'll first make a patched windows-installer (see above) and then I'll
> try to go upstream.

Dan just a few days ago committed a change requiring C++11 to work.  I
thought we called g++ using -std=c++11 options, but maybe that does
still not work with older compiler/library versions?

-- 
David Kastrup



Re: french beaming incorrectly makes stems longer

2020-01-25 Thread Kevin Barry
On Sat, Jan 25, 2020 at 09:27:07AM +0100, Thomas Morley wrote:
> Am Sa., 25. Jan. 2020 um 08:58 Uhr schrieb Kevin Barry :
> >
> > The minimum length of the stem of the middle note is forcing the beams down.
> 
> Not here. It's more the relevant value of
> beamed-extreme-minimum-free-lengths. See:
> 
>  \relative c'' {
> r16 f d f
> \override Stem.details.beamed-extreme-minimum-free-lengths =
>   #'(2.0 0.8)  %% original:  '(2.0 1.25)
> \override Stem.french-beaming = ##t
> r16 f d f
>   }
OK I see. It seems the value is hard coded now, but in the case of
French beaming it would need to be different depending on how many beams
there are (the above code works for semiquavers, but I think the value
needs to be smaller for demisemiquavers).

I am happy to try patching it, but I wouldn't know where to start.
> 
> Cheers,
>   Harm



Re: gub fail/local-build-script/new bug?

2020-01-25 Thread Thomas Morley
Am Fr., 24. Jan. 2020 um 22:28 Uhr schrieb Thomas Morley
:
>
> Am Fr., 24. Jan. 2020 um 22:16 Uhr schrieb Dan Eble :
> >
> > On Jan 24, 2020, at 15:13, David Kastrup  wrote:
> >
> >
> > Thomas Morley  writes:
> >
> > ...
> >
> > In member function 'std::string Interval_t::to_string() const':
> > /home/hermann/gub/target/freebsd-x86/src/lilypond-git.sv.gnu.org--lilypond.git-master/flower/include/interval.tcc:142:14:
> > error: 'std::to_string' has not been declared
> >
> > ...
> >
> > Probably:
> >
> > commit 9cf6b20aefd79be13c7678d4cc834434b7ca000d
> > Author: Dan Eble 
> > Date:   Sat Jan 11 08:55:36 2020 -0500
> >
> >Issue 5659/8: Remove Interval_t::T_to_string ()
> >
> >
> > This is probably not the root cause, for though this tries to use 
> > std::to_string(), the reason it does so is because several preceding 
> > commits that removed ::to_string() overloads that were duplicating the 
> > function of std::to_string().  I think if you reverted just this commit, 
> > you'd hit an undefined std::to_string() elsewhere.
> >
> > Our current source code assumes more or less C++11 I think, and GUB
> > compilers might not be up to it?
> >
> >
> > This seems likely.  (Have I mentioned how tiresome GUB is?  I know it's 
> > been a while since anyone complained about it.)
> >
> > Can we upgrade GUB, or should I start working to restore the global 
> > ::to_string() functions?  Newer systems are better off with things the way 
> > they are, but I don't see a third option.
> > —
> > Dan
> >
>
> Well, I can't do any reasonable GUB-fixing, it's out of my depth.
>
> Also, your relevant patches are out of my depth as well. Though,
> nobody objected during review, thus I think we should keep them.
>
> But I happily test things :)
> Right now I try a GUB-build from a local branch containing nothing
> else than already released 2.19.83. (with said gublbb and most recent
> GUB)
> If it fails (it worked half a year ago), than I suspect a GUB-problem.
> And I may try to bisect GUB, although this will be very tedious...
> If success I may try going lilypond-upstream.
>
> Cheers,
>   Harm

This GUB-build succeded.
Since I used the most up to date GUB, I suspect the encountered
problem somewhere in LilyPond not in GUB.
I'll first make a patched windows-installer (see above) and then I'll
try to go upstream.

Cheers,
  Harm



Re: french beaming incorrectly makes stems longer

2020-01-25 Thread Thomas Morley
Am Sa., 25. Jan. 2020 um 08:58 Uhr schrieb Kevin Barry :
>
> The minimum length of the stem of the middle note is forcing the beams down.

Not here. It's more the relevant value of
beamed-extreme-minimum-free-lengths. See:

 \relative c'' {
r16 f d f
\override Stem.details.beamed-extreme-minimum-free-lengths =
  #'(2.0 0.8)  %% original:  '(2.0 1.25)
\override Stem.french-beaming = ##t
r16 f d f
  }

Cheers,
  Harm



Re: french beaming incorrectly makes stems longer

2020-01-25 Thread Urs Liska



Am 25. Januar 2020 08:56:44 MEZ schrieb Werner LEMBERG :
>
>> What is "french beaming" supposed to do/be?
>
>No stems within the beam.

Ah, yes. Sorry for forgetting that...
>
>
>Werner

-- 
Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.



Re: french beaming incorrectly makes stems longer

2020-01-25 Thread Werner LEMBERG


> The minimum length of the stem of the middle note is forcing the
> beams down.

Sounds sensible.  Can you provide a patch to fix that?  The minimum
stem length for french beams must be handled identically to the
non-french case.


Werner