2009/8/24 Michal Suchanek <hramrach / centrum.cz>:
> 2009/8/24 Shyouhei Urabe <redmine / ruby-lang.org>:
>> Issue #1991 has been updated by Shyouhei Urabe.
>>
>>
>> Remember, 1.8.6 was released in May 2007, which is before-Leopard ara. As far as I know there was no problems on flat namespaces then.

Sorry, I did not make this clear the first time. The flat namespace
was always as limited as it is now. When two extensions use a library
of the same name but from different place (directly or through a
different library) than in flat namespace only one of the libraries is
loaded and which one depends on the order in which the extensions are
loaded.

In twolevel namespace every extension gets the library with which it was linked.

Then if you install an updated library in /usr/local or /opt or
whatever and build one extension against that library and one
extension against a system framework which uses the ancient system
libraries both still work.

>
> Sorry, I don't know what leopard stands for. It's hard enough to
> remember the numbers.
>
> Either way twolevel namespace is available for quite some time on OS
> X. According to ld(1) man page flat namespace was the default only on
> 10.0 and ever since twolevel should be available as it is the default.
>
> However, since 10.3 it is possible to use dynamic lookup for libraries
> which means that extensions can be built even with undefined symbols.
> Previously you had to link dynamic object properly so that all symbols
> are defined which might have prevented some sloppy extensions from
> building.
>
> iirc I was building twolevel on 10.2 as well which required that the
> extensions were built properly or failed rather than installing and
> failing to load.
>
> Thanks
>
> Michal
>
>