1st August 2003

by Derek Kite
 

This Week...

QtRuby, Ruby bindings for Qt are now in Kdebindings. Kdevelop has a new class browser. An OBEX kio-slave has been added. Kwallet is enabled for compilation and testing. Plus Kwin improvements, lots of work on Kpilot conduits and many bugfixes.
Dirk Mueller has been going through the codebase, with the comment "unbreak compilation (gcc 3.4+)". Dominique Devriese wondered:
what kind of thing to expect problems with using gcc 3.4+ ? I've checked some parts of your latest commit, and the only thing I see is that you can't put a semicolon after the '}' ending a function definition any more. More problems to watch out for ?
Dirk Mueller responded:
There are a couple of problems, most of them related to code using template (and especially STL). There is hardly any code in KDE that gets the two-stage name lookup in templates right.

Changes in GCC 3.4:
  • The C++ parser in G++ has been rewritten from scratch. As a result, G++ is considerably more compliant to the C++ standard. As a result, it accepts more valid programs, and rejects more invalid programs. Many of the changes below are a consequence of the new parser.
  • Friend declarations that refer to template specializations are rejected if the template has not already been declared. For example:

    template <typename T>
    class C {
    friend void f<>(C&);
    };

    is rejected; you must first declare `f' as a template:

    template <typename T>
    void f(T);

  • You must use "template <>" to introduce template specializations, as required by the standard. For example:

    template <typename T>
    struct S;
    struct S<int> { };

    is rejected; you must write:

    template <>
    struct S<nt> {};

  • You must now use the `typename' and `template' keywords to disambiguate dependent names, as required by the C++ standard.
  • The "named return value" extension has been removed.
  • The "implicit typename" extension has been removed.
  • G++ used to accept code like this:

    struct S {
    int h();
    void f(int i = g());
    int g(int i = h());
    };

    This behavior is not mandated by the standard. Now G++ issues an error about this code. To avoid the error, you must move the declaration of `g' before the declaration of `f'. The default arguments for `g' must be visible at the point where it is called.
  • When -pedantic is used, G++ now issues errors about spurious semicolons; for example:

    namespace N {}; // Invalid semicolon.
    void f() {}; // Invalid semicolon.

  • G++ no longer accepts attributes for a declarator after the initializer associated with that declarator. For example:
    X x(1) __attribute__((...));

    is no longer accepted. Instead, use:

    X x __attribute__((...)) (1);

  • Covariant returns are implemented for all but varadic functions that require an adjustment.

    Statistics

    Commits 1500 by 162 developers, 207363 lines modified, 2174 new files
    Open Bugs 4596
    Open Wishes 4277
    Bugs Opened 298 in the last 7 days
    Bugs Closed 365 in the last 7 days

    Commit Summary

    Module Commits
    kde-i18n
     
    251
    kdenonbeta
     
    222
    kdelibs
     
    145
    www
     
    119
    kdepim
     
    109
    kdebase
     
    109
    kdevelop
     
    94
    kdemultimedia
     
    58
    kdeextragear-1
     
    51
    kdeextragear-2
     
    48
    Lines Developer Commits
    79841
     
    Stephan Kulow
     
    97
    2312
     
    Dirk Mueller
     
    85
    639
     
    Chris Howells
     
    78
    918
     
    Luboš Luňák
     
    62
    1259
     
    George Staikos
     
    43
    698
     
    Sebastian Trueg
     
    43
    1158
     
    Thiago Macieira
     
    35
    2038
     
    Roberto Raggi
     
    32
    1503
     
    Alexander Dymo
     
    28
    20
     
    Richard Dale
     
    26

    Internationalization (i18n) Status

    Bug Killers

    No commits found

    Thanks for reading the KDE Commit-Digest!