delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2002/01/16/19:38:41

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-ID: <3C461C43.5070305@ece.gatech.edu>
Date: Wed, 16 Jan 2002 19:35:15 -0500
From: Charles Wilson <cwilson AT ece DOT gatech DOT edu>
User-Agent: Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.4) Gecko/20011019 Netscape6/6.2
X-Accept-Language: en-us
MIME-Version: 1.0
To: Reini Urban <rurban AT x-ray DOT at>
CC: "Larry Hall (RFK Partners, Inc)" <lhall AT rfk DOT com>, cygwin AT cygwin DOT com
Subject: Re: error trying to compile anything
References: <1011214219 DOT 8034 DOT ezmlm AT cygwin DOT com> <4 DOT 3 DOT 1 DOT 2 DOT 20020116182829 DOT 02304590 AT pop DOT ma DOT ultranet DOT com> <3C4617B1 DOT 7A7A5C31 AT x-ray DOT at>

Okay people:

0) "short filenames" is NOT the reason for "cygwin1.dll".  It is called 
that because it is the 1st stable backward compatible DLL.  Everything 
compiled against any version of cygwin1.dll in the past will work with 
any newer version without relinking (but not vice versa).  For instance:
   a)  build foo.exe while cygwin1.dll(1.3.1) is on your system
       foo.exe will work with cygwin1.dll(1.3.2, 1.3.3, 1.3.4, 1.4.0,
       etc) WITHOUT recompiling.

   b) However, if you build foo.exe while cygwin1.dll(1.3.1) is on
      your system, you should NOT expect that it will work if you
      revert your cygwin1.dll to an EARLIER version, such as
      1.3.0, 1.1.8, etc.

When a) is no longer true, then we will bump the DLL name to "cygwin2.dll".

1) cygwin supports symlinks -- but microsoft does not.  And it is the 
Microsoft Windows Runtime Loader that must search out and load the DLLs 
into memory.  Therefore, you cannot have "cygwin-1.1.3.dll -> 
cygwin-1.1.6.dll" and expect programs that want cygwin-1.1.3.dll to 
work.  Therefore you must have actual copies of every cygwin-x.y.z dll 
on your system that is needed by some executable.  Symlinks not allowed.

2) If you have multiple cygwin dlls on a system, then they must all use 
different named shared memory areas (otherwise bad things will happen). 
  This means that foo.exe (depends on cygwin-1.1.3.dll) and bar.exe 
(depends on cygwin-1.1.4.dll) can't communicate very well.

3) With strongly versioned DLLs, you can't fix bugs.  If 
cygwin-1.1.4.dll has a bug, then everything compiled against it will 
have that bug.  When cygwin-1.1.5.dll comes out, you'll have to 
recompile all of those applications to take advantage of the bug fix. 
Unix gets around this by having a MAJOR_VERSION (libfoo.so.X) and all 
the strongly versioned development links are just pointers to that 
(libfoo.so.X.Y.Z -> libfoo.so.X).  On windows, we can't really do that 
(see point #1 above).  So, you might as well be linking everything 
statically -- because you lose the ability to slipstream bugfixes.

See the "DLL naming" thread in the cygwin-apps mailing list archive from 
1.5years ago for more information.

Reini, you don't know as much about "real" versioning as you think. 
Check the libtool mailing list and documentation for info on version 
strings, (c - a) numbering, and backward compatibility.

--Chuck


Reini Urban wrote:

> Reini:
> 
>>>what about "real" versioning of the cygwin.dll finally?
>>>perl did the half-baked thing (perl56.dll), though I heavily voted for
>>>the real thing that times.
>>>cygwin also (cygwin1.dll). why not cygwin-$(version).dll => cygwin-1.1.6.dll
>>>
>>>this is not FAT16 anymore. we have w95/98/ME and NT systems only.
>>>all support long filenames.
>>>duplicate dll's will be gone. microsoft dll hell will be past tense.
>>>
>  
> "Larry Hall (RFK Partners, Inc)" schrieb:
> 
>>The issue is not as simple as just DLL names.  Of course, if you want
>>to show us all your dandy solution, provide a patch and it will be
>>thoughtfully reviewed.
>>
> 
> is this list about politics (software design) or patches (software
> implementation) only?
> 
> of course dll names are just part of the game. but an important one, 
> which bit microsoft heavily AFAIK. 
> cygwin does support softlinks, so we should use them.
> the implementation is trivial, but there should be consense.
> 



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019