[linux-audio-dev] [ot] [rant] gcc, you let me down one time too many

Tim Goetze tim at quitte.de
Sat Jun 4 14:59:06 UTC 2005


Frailty, thy name is GCC

A Modern Drama in Three Scenes.

Dramatis Personae: An ardent programmer and a popular C++ compiler

-*-

Prologue:

Appalled by the rat race commonly known as the proprietary software 
business, our young and gifted hero joins the light side, deeply 
inspired by the manifold yet subtle qualities of free software.

Scene I:

Our hero in day-and-night-long sessions optimizes the hell out of a 
SSE2-based n*4-band IIR equalizer. Of course in assembly, and mixed 
with C++ templating. The final code is about 10% faster than floats on 
AMD, probably a fair bit quicker yet on P4 systems.

Enter gcc version 3, which drops multi-line inline assembly support. 
Said assembly code becomes effectively unusable and dies a quick and 
unsung death.

Scene II:

Our hero puts years of work into an all-round realtime audio and MIDI 
library that expands the Python programming language. While having its 
flaws, it's a versatile, surprisingly stable and immensely capable 
system, partly thanks to a very clever (according to our hero) design 
that subclasses Python's C types in C++.

Enter gcc version 3, moving the vtable member to memory offset 0 of a 
derived type even if the base type is in C which doesn't know about 
vtables. As a result, the very foundation of said library's type 
system is rendered nonfunctional since Python expects its type header 
to reside in the very same memory location. With no precautions for 
such an abrupt change taken and the implications requiring a manual 
review and substantial rewrite of a good 50.000 lines of source code, 
said library dies a slow and painful but equally unsung death.

Scene III:

Our hero bundles his DSP efforts into a free plugin library, once 
again saving himself much work and improving code readability by using 
C++ templates, resulting in quite an elegant object system and source 
code, hethinks.

Enter gcc version 4, which requires the templated types' constructor 
code be rewritten in the most nonsensical, misleading and ugly fashion 
possibly imaginable this side of Hungary and Redmond, WA, according to 
our (now not so very young anymore) hero.

Epilogue:

Our hero has completely and permanently lost his faith in the popular 
compiler. Disillusioned and indecisive, he resigns himself to 
henceforth reluctantly write C++ only to support his miserable life. 
His plight is so bad he downright refuses to support the latest 
follies of the popular compiler in his free software efforts.

-*-

Will this be the end? To be continued, hopefully.

Cheers, Tim



More information about the Linux-audio-dev mailing list