This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: mismatched dll

> OK, I understand now, thank you. So, it would be possible to start
> another process, that has a well known protocol, that distributes the
> communication between dll's, instead of sharing the memory explicitly?
> I'm just curious, I know this isn't going to happen.

Yes its possible (pretty much anything in computer science is,
if you are willing to write the code and wait long enough).  The
difference is that shared memory is SO much faster than a
data-copying communication protocol that it isn't even funny.
Have you ever run cygwin on a Win9x machine, where the entire
shared region has to be copied into the correct location because
Windows didn't provide a convenient way to lock addresses, vs.
a WinNT machine, where the shared memory already lives in the
correct location?  The timing difference on every fork() or exec()
is staggering, and can't be blamed on processor speed alone.  And
yet even cygwin on WinNT is slower than native Linux, because
Windows doesn't provide the nice copy-on-write semantics of
memory pages shared between processes on a fork(), at least
not in a way easily used by cygwin.

> > versions.  But it DOES maintain binary compatibility of the API
> > it exposes.  Cygwin releases try very hard to guarantee that
> > something compiled against an older cygwin1.dll will continue
> > to run when a newer cygwin1.dll is put in its place.  The
> Yeah, that's nice. However, what happens when this changes? 

People gripe on this list.  And it usually gets fixed pretty quickly,
although you may have to rely on snapshots for a while.  And
the snapshots exist to prevent this sort of mishap on general
releases, if people would test them.

> I love Cygwin, so the following is not an attack against it, just
> critism that one day could hopefully be resolved. The way Cygwin
> currently can be distributed (as described above) is not 'packager
> friendly'. If the user does happen to install your package (which has
> cygwin1.dll in it) and then they install cygwin, the currently installed
> package will no longer work.  I don't see any way to prevent this from a
> packaging perspective.

There's always another alternative - propose to maintain your
package as part of the official cygwin distribution.  Then you
just point people to, and source code distribution
becomes's problem instead of yours.

Eric Blake

Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]