Export ?

Paulo Pinto pjmlp at progtools.org
Wed Apr 11 05:11:49 PDT 2012


And as I noted on my post, Windows is not alone in this regard.

Many other OS follow the same explicit export principle, AIX
being one of them.

Linux != UNIX

--
Paulo

On Wednesday, 11 April 2012 at 11:29:53 UTC, Manu wrote:
> On 11 April 2012 13:50, Jonathan M Davis <jmdavisProg at gmx.com> 
> wrote:
>
>> On Wednesday, April 11, 2012 11:56:00 deadalnix wrote:
>> > Le 10/04/2012 19:44, Jonathan M Davis a écrit :
>> > > On Tuesday, April 10, 2012 19:36:06 deadalnix wrote:
>> > >> On this newsgroup with Jonathan M Davis, we started 
>> > >> discussing export.
>> > >> As it was off topic, and as it was interesting, I wish to 
>> > >> bring it
>> here.
>> > >>
>> > >> As most of you know, all symbol on posix systems are 
>> > >> export, but not
>> on
>> > >> windows. As D have an export keyword, the question is 
>> > >> what to do with
>> it.
>> > >>
>> > >> The need for change in the UNIX world of this behavior 
>> > >> exists, and
>> some
>> > >> move has been made in direction of explicitly hiding 
>> > >> symbols ( see
>> > >> http://gcc.gnu.org/wiki/Visibility ).
>> > >
>> > > As I said in the other thread, I _hate_ export. It's one 
>> > > of Windows
>> > > largest
>> > > misfeatures IMHO. It drives me nuts when I have to deal 
>> > > with it in C++.
>> > > The
>> > > fact that Linux exports everything is _fantastic_. It's so 
>> > > much easier
>> to
>> > > deal with. I'd _hate_ to see Linux or anything we do move 
>> > > in the
>> > > direction of what Windows has done.
>> > >
>> > > - Jonathan M Davis
>> >
>> > It isn't a misfeature. The link explain why it is 
>> > interesting :
>> >   - It improves load time of DSO.
>> >   - Allow more optimizations.
>> >   - Reduce DSO size by 5% to 20% for C++. Considering how 
>> > long mangling
>> > are in D, probably more for us.
>> >   - Reduce name collision (this one poorly apply to D, 
>> > because the
>> > module system handle that quite nicely).
>> >
>> > Additionally, it allow automatic finalization for non 
>> > exported methods
>> in D.
>> >
>> > The drawback is having to explicitely export. I think it 
>> > worth it,
>> > especially considering « export: » is an available 
>> > solution. A compiler
>> > switch is also an option.
>> >
>> > BTW, Linux is moving in that direction, for the advantages 
>> > given above.
>> > Some other posix systems also does that already.
>>
>> Honestly, I don't care what list of benefits you can come up 
>> with for
>> having to
>> explicitly export symbols. I am sick and tired of having to 
>> deal with build
>> breakages due to unexported symbols in C++ on Windows. It is 
>> really,
>> reallly,
>> really annoying. It's a usability nightmare as far as I'm 
>> concerned, and I
>> don't want to see it spread any more than I want to see cancer 
>> spread.
>>
>> As far as I'm concerned, Linux got this _right_ and Windows 
>> got it
>> completely
>> wrong, and I do _not_ want to see export being used in D any 
>> further than
>> it
>> is. It's bad enough that the export keyword exists at all.
>>
>
> Apply the same rules to Linux, and it'll never bother you 
> again. It's the
> only solution, you can't possibly influence Microsoft to apply 
> the inverse.
> As far as I'm concerned windows got it _right_ and linux got 
> it... 'linux'.
> I like DLL's being self contained modules with tightly 
> controlled
> interfaces. And deadalnix lists important points.




More information about the Digitalmars-d mailing list