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

Reply via email to