On Sun, 2005-07-24 at 08:26 +0200, Werner LEMBERG wrote:
> > So, are there any plans for next major release in near future?
> 
> Yes, in autumn.
> 
> > Will the ABI change other than hiding these internal functions?
> 
> It will get a new major .so version (at least this was the concensus
> on this list, IIRC), but there won't be any major changes in the code
> itself, I think.

I probably brought this up last time as well, but just wanted to
reemphasize something here:

 Changing the soname of a base library like FreeType does *not* give
 parallel install.

What one might think is "OK, we can just rebuild a few things Pango
and fontconfig and not worry about big packages like OpenOffice 
and Mozilla - they can keep on using libfreetype.so.6, which we
can keep around as a compatibility library.

This doesn't work because OpenOffice links to GTK+, and fontconfig,
etc, so if OpenOffice isn't rebuilt, then it will link to *both*
libfreetype.so.6 and libfreetype.so.7. This will produce all sorts
of badness.

So, as long as people are willing to fix the few known things that
break (and this can be enforced at a packaging level with statements
like Conflicts: pango <= 1.8.2) keeping the same soname is actually
the *safer* option.

It's certainly workable to deal with a soname change as well -
the way we'd do it is by simply replacing the library and rebuilding
everything that breaks: Mozilla, and OpenOffice, and X, etc... 30-40
packages in Fedora Core 4.  A little painful, but soon over.

(Assuming that people don't have 3rd party binaries that depend on
the system libfreetype. We don't guarantee binary compatibility 
between successive versions of RHEL and definitely not of Fedora
so it isn't a theoretical problem, but it definitely makes people
grumpy when their binaries stop working.)

> We probably should use libtool's `-export-symbols' option to really
> hide the internal functions; any further advice on this topic is
> highly welcome.

-export-symbols is pretty straightforward to use - we use it (or
actually, -export-symbols-regex for Pango). You probably could build
the symbol file pretty easily by scanning the for FT_EXPORT ...
well, if you didn't use that for internal symbols.

With recent GCC you have a couple of other options that can improve
the efficiency by avoiding dynamic symbol lookup for internal symbols -
you can tag internal symbols with __attribute__((visibility("hidden"))).

Or with very recent GCC, you can build the whole library with
-fvisibility=HIDDEN and tag just the exported functions with 
__attribute__((visibility("default"))) which is nicely compatible 
with the Windows way of doing things.

Regards,
                                                Owen

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

_______________________________________________
Freetype-devel mailing list
Freetype-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/freetype-devel

Reply via email to