2009/8/24 Shyouhei Urabe <redmine / ruby-lang.org>:
> Issue #1991 has been updated by Shyouhei Urabe.
>
>
> If -flat_namespace was the default for linking, we could safely omit thatand we were all happy. There were reasons for that explicit option (back when OS X was 10.1 -- the time of that flag addition). As you know, when you compile ruby you first make miniruby, create bundles, then make ruby binary. Those -undefined suppress -flat_namespaces options arerequired for bundles because when they are compiled libruby.so is not yet installed. There was no -undefined dynamic_lookup option then.
>
> Anyway as time went by, I think it's OK for 1.8.8 to move to -twolevel_namespace. What I worry is that 1.8.6 already has tons of third party extensions that has been compiled with -flat_namespace. Some of them might rely on the flatness of function namespace. For instance, Failmalloc ( http://www.nongnu.org/failmalloc/ ) sprung to my mind.

According to their web site failmalloc relies on glibc (and LD_PRELOAD
is probably a feature of GNU ld which would not work on OS X). Sure,
there could be some very low level libraries that break.

On the other hand, some common and high-level libraries unexpectedly
break because of flat namespace.