Re: probable guile-1.8.9 release

2021-01-17 Thread hahnjo--- via Discussions on LilyPond development
Am Samstag, dem 16.01.2021 um 20:20 +0100 schrieb Han-Wen Nienhuys:
> On Sat, Jan 16, 2021 at 2:52 PM Jonas Hahnfeld  wrote:
> > > I can probably trim down the fix to be more backward compatible.
> > > 
> > > Do you know of documentation that details what is and is not allowed
> > > in an ABI-compatible change?
> > 
> > No, but let me know if you find one, would be good to have a reference
> > to a writeup from somebody who knows.
> > [..]
> > This means you must only change the body of functions and the size of
> > static variables (that are local per TU). Changing the meaning of only
> 
> Thanks! How's this?
> https://github.com/hanwen/guile/commit/3bf5057232c35df155badfee9489081bdbbf4ecb

Yes, this looks ABI compatible and seems to work locally for me. I'm
not knowledgeable enough to properly review the fix, but there's some
unrelated whitespace changes in there that you might want to trim and
the commit message has many typos / grammar errors that make it hard to
read.


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


Re: probable guile-1.8.9 release

2021-01-16 Thread Han-Wen Nienhuys
On Sat, Jan 16, 2021 at 2:52 PM Jonas Hahnfeld  wrote:
> > I can probably trim down the fix to be more backward compatible.
> >
> > Do you know of documentation that details what is and is not allowed
> > in an ABI-compatible change?
>
> No, but let me know if you find one, would be good to have a reference
> to a writeup from somebody who knows.
> [..]
> This means you must only change the body of functions and the size of
> static variables (that are local per TU). Changing the meaning of only

Thanks! How's this?
https://github.com/hanwen/guile/commit/3bf5057232c35df155badfee9489081bdbbf4ecb

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



Re: probable guile-1.8.9 release

2021-01-16 Thread Jonas Hahnfeld via Discussions on LilyPond development
Am Samstag, dem 16.01.2021 um 13:38 +0100 schrieb Han-Wen Nienhuys:
> On Sat, Jan 16, 2021 at 9:56 AM Jonas Hahnfeld via Discussions on
> LilyPond development  wrote:
> > 
> > Am Montag, dem 11.01.2021 um 11:06 +0100 schrieb Michael Käppler:
> > > Am 11.01.2021 um 10:58 schrieb Thomas Morley:
> > > > Hi,
> > > > 
> > > > please have a look at
> > > > https://lists.gnu.org/archive/html/guile-user/2021-01/msg00026.html
> > > > 
> > > > Cheers,
> > > >    Harm
> > > > 
> > > Could this probably include Han-Wen's recent fix regarding GC?
> > 
> > My understanding is that the fix is ABI incompatible with earlier
> > releases of Guile 1.8; at least I get
> > $ LD_LIBRARY_PATH=/code/guile/install/lib/ ./out/bin/lilypond -dhelp
> > ./out/bin/lilypond: Symbol `scm_i_master_freelist2' has different size in 
> > shared object, consider re-linking
> > ./out/bin/lilypond: Symbol `scm_i_master_freelist' has different size in 
> > shared object, consider re-linking
> > 
> > This is because scm_t_cell_type_statistics, the type of the two
> > symbols, changed size (got bigger), and this is usually a no-no for a
> > minor bugfix release. I'm not saying this makes sense (AFAICT these
> > symbols shouldn't be public), but it's the current situation and the
> > bugfix would require relinking all objects depending on the library.
> 
> I can probably trim down the fix to be more backward compatible.
> 
> Do you know of documentation that details what is and is not allowed
> in an ABI-compatible change?

No, but let me know if you find one, would be good to have a reference
to a writeup from somebody who knows.

My understanding is the following:
 * API compatibility means that the same source code is expected to
work, ie no removed functions or changed semantics of arguments. Added
functions are mostly fine, I think, as are changes to public data
structures such as adding or reordering symbols. The latter requires
recompilation and / or relinking.
 * On top of that, ABI compatibility means that the library can be used
as a drop-in replacement. This means all data structures and symbols
must have the same size, and I think you may only add methods to the
end of C++ classes (but I may misremember something here).

Now because Guile 1.8 is built without -fvisibility=hidden, my
understand is that *all* internal symbols are part of the public ABI.
This means you must only change the body of functions and the size of
static variables (that are local per TU). Changing the meaning of only
internally used data structures is probably ok as long as you keep the
size.

You can easily find if you did something wrong by executing a binary
compiled against an existing version of the library. If that works,
chances are that it's ABI compatible, but I'd bet there are odd corner
cases...

Jonas


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


Re: probable guile-1.8.9 release

2021-01-16 Thread Werner LEMBERG
> Do you know of documentation that details what is and is not allowed
> in an ABI-compatible change?

You might try

  https://lvc.github.io/abi-compliance-checker/


Werner



Re: probable guile-1.8.9 release

2021-01-16 Thread Han-Wen Nienhuys
On Sat, Jan 16, 2021 at 9:56 AM Jonas Hahnfeld via Discussions on
LilyPond development  wrote:
>
> Am Montag, dem 11.01.2021 um 11:06 +0100 schrieb Michael Käppler:
> > Am 11.01.2021 um 10:58 schrieb Thomas Morley:
> > > Hi,
> > >
> > > please have a look at
> > > https://lists.gnu.org/archive/html/guile-user/2021-01/msg00026.html
> > >
> > > Cheers,
> > >Harm
> > >
> > Could this probably include Han-Wen's recent fix regarding GC?
>
> My understanding is that the fix is ABI incompatible with earlier
> releases of Guile 1.8; at least I get
> $ LD_LIBRARY_PATH=/code/guile/install/lib/ ./out/bin/lilypond -dhelp
> ./out/bin/lilypond: Symbol `scm_i_master_freelist2' has different size in 
> shared object, consider re-linking
> ./out/bin/lilypond: Symbol `scm_i_master_freelist' has different size in 
> shared object, consider re-linking
>
> This is because scm_t_cell_type_statistics, the type of the two
> symbols, changed size (got bigger), and this is usually a no-no for a
> minor bugfix release. I'm not saying this makes sense (AFAICT these
> symbols shouldn't be public), but it's the current situation and the
> bugfix would require relinking all objects depending on the library.

I can probably trim down the fix to be more backward compatible.

Do you know of documentation that details what is and is not allowed
in an ABI-compatible change?

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



Re: probable guile-1.8.9 release

2021-01-16 Thread Jonas Hahnfeld via Discussions on LilyPond development
Am Montag, dem 11.01.2021 um 11:06 +0100 schrieb Michael Käppler:
> Am 11.01.2021 um 10:58 schrieb Thomas Morley:
> > Hi,
> > 
> > please have a look at
> > https://lists.gnu.org/archive/html/guile-user/2021-01/msg00026.html
> > 
> > Cheers,
> >    Harm
> > 
> Could this probably include Han-Wen's recent fix regarding GC?

My understanding is that the fix is ABI incompatible with earlier
releases of Guile 1.8; at least I get
$ LD_LIBRARY_PATH=/code/guile/install/lib/ ./out/bin/lilypond -dhelp
./out/bin/lilypond: Symbol `scm_i_master_freelist2' has different size in 
shared object, consider re-linking
./out/bin/lilypond: Symbol `scm_i_master_freelist' has different size in shared 
object, consider re-linking

This is because scm_t_cell_type_statistics, the type of the two
symbols, changed size (got bigger), and this is usually a no-no for a
minor bugfix release. I'm not saying this makes sense (AFAICT these
symbols shouldn't be public), but it's the current situation and the
bugfix would require relinking all objects depending on the library.

Jonas


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


Re: probable guile-1.8.9 release

2021-01-11 Thread Michael Käppler

Am 11.01.2021 um 10:58 schrieb Thomas Morley:

Hi,

please have a look at
https://lists.gnu.org/archive/html/guile-user/2021-01/msg00026.html

Cheers,
   Harm


Could this probably include Han-Wen's recent fix regarding GC?

Cheers,
Michael



probable guile-1.8.9 release

2021-01-11 Thread Thomas Morley
Hi,

please have a look at
https://lists.gnu.org/archive/html/guile-user/2021-01/msg00026.html

Cheers,
  Harm