19th November 2004 by Derek Kite

This Week...

Kicker rewrite merged into HEAD for further testing. New Kontact summary plugin for dates and holidays. kttsd adds support for Festival 2.0 MultiSyn voices. KDevelop has a new Ruby source code debugger.
We have seen many optimizations in Kde over the last couple of years. Many of these optimizations affect specific parts of Kde such as the icon lists, or screen rendering. While this tightening of the codebase is going on, optimizations are happening on a different level. Compiler and linker improvements are being made, especially with regard to the particular requirements of C++ code generation.
Dirk Mueller applied patches to most source files with a comment referring to KDE_EXPORT, culminating in this commit:
make symbols hidden by default if the compiler supports it. This reduces DSO lib size by about 2% and symbol relocations by about 5%.
If you look at the diff, you see '-fvisibility' is added as a compiler parameter. Along with the change in the acinclude.m4.in file, there were extensive changes throughout the codebase. An example is from kdelibs/interfaces/kmediaplayer/player.h, with the commit log referring to adding exports. Here is the diff.
So what is this all about? Back in July in the kde-optimize list, Karl Vogel commented that he had tested the -fvisibility parameter and had prepared a patch. Here is the comment:
Right.. I now have a complete KDELIBS / KDEBASE running build with gcc+visibility patch and default visibility set to hidden. This means that nothing is exported in shared libs by default. I'm now wondering if this *huge* patch will stand any chance of being applied (before doing too much extra work on it) ?! And no I don't mean for 3.3 :-) The patch won't have any adverse effects as far as I can think off, since it can completely be disabled by defining KDE_EXPORT as empty.

Here's what it takes to make KDE work with hidden default:
  • am_edit / unsermake needs a patch to export kdeinitmain generated stubs
  • kdelibs/dcop/dcopidl2cpp patch to handle LINK_SCOPE tag (which is already present in .kidl files)
  • giant patch to place KDE_EXPORT on all classes that need exporting and on files which have kdeinit/kdeinitmain, KCModule functions, kss_ screensaver functions, ...
Any thoughts?! Questions?
For a little more background, Karl Vogel writes:
While playing with this symbol stuff.. I noticed that other libs were also exporting way more than needed.

For instance... libkateinterfaces has exports for all the private methods & private slots of all the classes it implements.

I was able to reduce the symbols by manually adding an attribute to the private parts (source parts.. not the other kind :-) ... ie.

#define HIDE __attribute__((visibility ("hidden"))

and then...

private:
void methodX() HIDE;

This worked.. but it seemed strange that there was no better way to do this.. so I put the question to gcc-devel:
http://thread.gmane.org/gmane.comp.gcc.devel/51574

Esp. the answer of Giovanni Bajo was interesting, pointing me to this webpage:

GCC Symbol Visibility Patch
http://www.nedprod.com/programs/gccvisibility.html

Reading through the gcc PR issues.. I noticed a familiar name.. so guess some KDE developers are already onto this.

Has the dllexport/dlllocal macro as shown on the gcc visibility patch page been considered yet?! (ie. for KDE4 coding style)
Stephan Kulow wrote a reminder regarding KDE 3.3.2
I'd like to remind anyone that next weekend KDE 3.3.2 will be tagged and prepared for release. Please use the remaining time to review your applications/translations and if you know of any missing piece on kde.org/announcements/changelogs/changelog3_3_1to3_3_2.php (there should be many), please either add it yourself or let me know.

As I didn't get additional feedback on the KDE 3.4 release schedule, I would like to use this mail to declare it active. The 3.4 feature list closes for additions next week, so we can release an alpha1 in early december.

BTW: I can't answer mails on weekends as long as I have no internet at home, which still might take a while. But I will answer, so don't worry.

Statistics

Commits 2275 by 191 developers, 271620 lines modified, 608 new files
Open Bugs 7829
Open Wishes 7223
Bugs Opened 324 in the last 7 days
Bugs Closed 381 in the last 7 days

Commit Summary

Module Commits
kde-i18n
656
 
kdelibs
196
 
kdepim
187
 
koffice
155
 
kdeextragear-2
151
 
kdebase
118
 
kdeextragear-1
109
 
valgrind
100
 
kdeextragear-3
87
 
kdenonbeta
83
 
Lines Developer Commits
678
 
Dirk Mueller
99
 
12202
 
Nicholas Nethercote
82
 
11540
 
Stefan Asserhäll
79
 
1918
 
George Staikos
72
 
3018
 
David Faure
66
 
1838
 
Laurent Montel
65
 
6293
 
Marek Laane
65
 
4805
 
Pedro Morais
63
 
2922
 
Alexander Dymo
54
 
20314
 
Rinse de Vries
49
 

Internationalization (i18n) Status

Language Percentage Complete
British English (en_GB)
99.22%
 
Swedish (sv)
99.11%
 
Estonian (et)
96.61%
 
Portuguese (pt)
95.82%
 
French (fr)
93.99%
 
Danish (da)
93.34%
 
Dutch (nl)
90.85%
 
Spanish (es)
90.71%
 
Italian (it)
89.28%
 
Serbian (sr)
88.67%
 

Bug Killers

Person Bugs Closed
Maks Orlovich
54
 
Aaron J. Seigo
49
 
Reinhold Kainhofer
34
 
Stephan Kulow
28
 
Luboš Luňák
22
 
Waldo Bastian
21
 
Renchi Raju
17
 
Tom Albers
16
 
Andras Mantia
14
 
Heiko Falk
14
 

No commits found