[linux-audio-dev] [ot] [rant] gcc, you let me down one time too many
Erik de Castro Lopo
erikd-lad at mega-nerd.com
Sun Jun 5 00:11:35 UTC 2005
Tim Goetze wrote:
> 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++.
Sound to me like that was relying on "undefined behaviour".
> 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.
Relying on undefined behaviour will, sooner or later, result in tears.
> 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.
Hmm, C++ bites again. I know little about C++, but maybe this last
change was due to some requirement of some C++ standard.
> Our hero has completely and permanently lost his faith in the popular
> compiler.
Two out of the 3 above were C++ related and did not affect
the GNU C compiler.
> Disillusioned and indecisive, he resigns himself to
> henceforth reluctantly write C++ only to support his miserable life.
Can I sell you an Ocaml:
http://www.ocaml.org/
Erik
--
+-----------------------------------------------------------+
Erik de Castro Lopo nospam at mega-nerd.com (Yes it's valid)
+-----------------------------------------------------------+
"... a discussion of C++'s strengths and flaws always sounds
like an argument about whether one should face north or east
when one is sacrificing one's goat to the rain god."
-- Thant Tessman
More information about the Linux-audio-dev
mailing list